想实现当点击按钮时,关闭线程生成的窗体,并结束线程
procedure mythread.onclick;
begin
Ftimer.Enabled:=false;
FForm.Close;
FForm.Free;//这一句加上就会出错,该部该要这一句呢?
terminate;
end;
procedure mythread.Execute;
begin
FreeOnTerminate := true;
Fcount := 6;
FForm :=TForm.Create(nil);
FForm.Width :=400;
FForm.Height :=300;
FForm.BorderStyle := bsDialog;
FForm.Position := poScreenCenter;
FForm.OnClose := unload;
FBtok := TButton.Create(FForm);
FBtok.Parent := FForm;
FBtok.Width :=100;
FBtok.Left :=20;
FBtok.Height :=200;
FBtok.Top :=50 ;
FBtok.OnClick := onclick;
FForm.ShowModal;
FForm.Free;
end;
procedure mythread.onclick;
begin
Ftimer.Enabled:=false;
FForm.Close;
FForm.Free;//这一句加上就会出错,该部该要这一句呢?
terminate;
end;
procedure mythread.Execute;
begin
FreeOnTerminate := true;
Fcount := 6;
FForm :=TForm.Create(nil);
FForm.Width :=400;
FForm.Height :=300;
FForm.BorderStyle := bsDialog;
FForm.Position := poScreenCenter;
FForm.OnClose := unload;
FBtok := TButton.Create(FForm);
FBtok.Parent := FForm;
FBtok.Width :=100;
FBtok.Left :=20;
FBtok.Height :=200;
FBtok.Top :=50 ;
FBtok.OnClick := onclick;
FForm.ShowModal;
FForm.Free;
end;
解决方案 »
- 整个界面edit全部只能输入数字的问题【没分了。。】
- 如何在程序里捕获键盘事件?
- 高手进啊,小弟不知道咋办
- 如何把sqlserver2000中的'image'类型字段内容导出到一个IStream变量里?
- Canvas.TextOut 字的背景如何为透明
- 【bug? about dbgrid in d6 & d7】
- 做单机的数据库应用程序,数据库用Access比Paradox要好的多。此观点如何?
- 安装第三方控键出问题build 时
- Delphi程序里面用到几个DragFinish、DragQuery之类的函数,编译运行的时候说没有定义?
- 假设有人ping我,如何得到icmp包以及对方的ip?
- 我想问问文件分割的问题。。。请帮忙。。。先谢谢各位
- 大数据量插入的问题,欢迎讨论!!!高分讨论
2句话都去掉后,应该是正确的。
Execute;这段运行完就自动释放线程了
FreeOnTerminate:=True只对以死循环形式实现的线程在Terminate时起做用,你现在的这种线程,在运行完到最后一条语句,会自动释放的.
楼上可以试验
procedure mythread.Execute;
begin
FreeOnTerminate := true;
while true do
beep(1);
sleep(100);
end;
不管你运行几次mythread.Terminate线程都不会结束