Código
esse processamento pode ser feito em segundo plano, através de uma thread. voce pode criar uma thread pelo menu FILE > NEW > OTHER... e seleciona o Item "New Thread" ou pelo modo mais simples, como o exemplo abaixo:
O Programa abaixo cria um arquivo TESTE.TXT e grava a posicão atual de um contador,
que gera numeros sequenciais até a checkBox seja marcada.
}
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
CheckBox1: TCheckBox;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function MinhaThread(P:Pointer):LongInt;
var
F :TextFile;
I :Integer;
begin
{Simula um processo Longo... }
{Pode ser trocado por qualquer outra rotina que demore muito}
AssignFile(F, 'C:TESTE.TXT');
ReWrite(F);
While not Form1.CheckBox1.Checked do
begin
i := i + 1;
Writeln(F,'Numero: ' + Inttostr(i));
Sleep(100);
end;
CloseFile(F);
end;
{Rotina do Botão}
procedure TForm1.Button1Click(Sender: TObject);
var
hThreadID :THandle;
ThreadID :DWord;
begin
{Cria a Thread, onde @MinhaThread é o Ponteiro da Função criada}
hThreadID := CreateThread(nil, 0, @MinhaThread, nil, 0, ThreadID);
end;
end.
Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009