|
procedure TFrmStatus.SetTerminate(Value: boolean;) // 设置结束状态
begin
if FTerminate <> Value then
begin
FTerminate := Value;
Timer1.Interval := 2;
Timer1.Enable := true;
end;
end;
procedure TFrmStatus.Timer1Timer(Sender: TObject); // 响应定时器,关闭窗口,返回mrOk
begin
Close;
ModalResult := mrOk;
end;
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
主窗体负责创建分析线程和状态显示窗体,并响应分析线程产生的“状态改变事件”和“分析结束事件”。
// 主窗体
TFrmMain := class(TForm)
private
FFrmStatus: TFrmStatus;
procedure DoStatusChange(Percent: Integer); // 响应分析进度改变事件
procedure DoFinished; // 响应分析结束事件
public
procedure Do;
end;
// 运行分析
procedure TFrmMain.Do;
var
MyThread: TMyThread;
FrmStatus: TFrmStatus;
begin
try
MyThread := TMyThread.Create(true);
MyThread.OnStatusChange := DoStatusChange;
MyThread.OnFinished := DoFinished;
try
FrmStatus := TFrmStatus.Create(nil);
FFrmStatus := FrmStatus;
MyThread.Resume; // 启动线程
if FrmStatus.ShowModal = mrOk then
ShowAnalyseResult; // 显示分析结果
finally
FFrmStatus := nil;
FrmStatus.Free;
end;
finally
MyThread.FreeOnTerminate := true;
MyThread.Terminate;
end;
end;
// 响应状态改变事件,显示进度
procedure TFrmMain.DoStatusChange(Percent: Integer)
begin
if FFrmStatus <> nil then
FFrmStatus.Percent := Percent;
end;
上一页 [1] [2] 没有相关教程
|