델파이로 대답을 해드리겠습니다...
Thread 객체를 사용해 보십시오..
먼저 Project에 Form1, Form2 가 있다면
Form1 -> Main Form - 1개의 Button이 있습니다.
Form2 -> Dialog Form, (Border Style을 bsDialog 로 바꿉니다)
- 1개의 Button과 1개의 ProgressBar가 있슴다
Unit1;
...
type
// Thread 객체 정의
TReadWord = class (TThread)
public
constructor Create;
procedure Execute; override;
end;
Form1 = class (TForm)
...
public
ReadWord : TReadWord;
end;
implementation
// Thread 객체 생성자
constructor TReadWord.Create;
begin
inherited Create (False);
FreeOnTerminate := true;
end;
...
// 실제 처리할 내용을 담는다...
procedure TReadWord.Execute;
var
i, j : integer;
begin
with Form2 do
begin
For i := 1 to 100 do
begin
for j := 1 to 10000000 do;
progressBar1.position := i;
if Terminated then
begin
Form2.Close;
Exit;
end;
end;
end;
Form2.Close;
end;
글구 Button을 누르면
procedure TForm1.Button1Click(Sender: TObject);
begin
ReadWord := TReadWord.Create;
Form2.ShowModal;
end;
// **************************************** //
Unit2; // 에서는...
// Form2(Dialog)를 닫힐 때
procedure TForm2.Button1Click(Sender: TObject);
begin
Form1.ReadWord.Terminate;
Close;
end;
// Form2(Dialog)가 닫힐 때 - OnClose Event
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Form1.ReadWord.Terminate;
end;
위와 같이 한 번 해보세요..
그럼..
|