Un ejemplo sencillo en delphi para copiar archivos con la API CopyFileEx, una barra de progreso, un botón de inicio y un botón de cancelación.
Código: [Seleccionar]
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; ProgressBar1: TProgressBar; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; Cancel: boolean; implementation {$R *.dfm} function ProgressRoutine(TotalFileSize, TotalBytesTransferred, StreamSize, StreamBytesTransferred: LARGE_INTEGER; dwStreamNumber, dwCallbackReason: DWORD; hSourceFile, hDestinationFile: THandle; lpData: Pointer): DWORD; stdcall; var Value: integer; begin Application.ProcessMessages(); if(dwCallbackReason = CALLBACK_CHUNK_FINISHED) then Form1.ProgressBar1.Position:= (int64(TotalBytesTransferred) * 100) div int64(TotalFileSize); Result:= PROGRESS_CONTINUE; end; procedure TForm1.Button1Click(Sender: TObject); begin Cancel:= false; CopyFileEx(Fuente, Destino, @ProgressRoutine, nil, @Cancel, 0); ShowMessage(SysErrorMessage(GetLastError())); end; procedure TForm1.Button2Click(Sender: TObject); begin Cancel:= true; end; end.
También para Builder aquí.
Saludos.
0 comentarios:
Publicar un comentario