我在主窗口里面开辟了一个线程主要执行一个循环
while(flag) do
begin
if (条件1) then
form2,showmodal
else if(条件2) do
form3.showmodal;
end;当我满足条件1然后显示form2后,在form2里面设置了一个返回按钮(close;)关闭form2,然后程序回到了主界面,但是此时,整个主界面像是被enable=false了一样,按钮啊什么的都不能点击。
我在线程里面设置断点后,程序就会停下来,说明线程还在执行的。
请问为什么主窗口不能点击了呢?什么问题?
while(flag) do
begin
if (条件1) then
form2,showmodal
else if(条件2) do
form3.showmodal;
end;当我满足条件1然后显示form2后,在form2里面设置了一个返回按钮(close;)关闭form2,然后程序回到了主界面,但是此时,整个主界面像是被enable=false了一样,按钮啊什么的都不能点击。
我在线程里面设置断点后,程序就会停下来,说明线程还在执行的。
请问为什么主窗口不能点击了呢?什么问题?
你的代码while里面写一个application.processmessage
另外
控件是可以操作了,又出现新问题了。
关闭主窗口的按钮中执行flag:=false。如果打开线程后,马上关闭主窗口,则没什么问题。
可是只要子窗口showmodal过再返回的,就会出现如下错误:
System Error Code 1400. 无效的窗口句柄。这又是什么原因呢?
找不到问题啊,这个无效的窗口句柄 是子窗口的什么句柄之类的么?速救啊
我想如果串口收到 数据为1 则打开子窗口1操作,收到数据为2 则打开子窗口2操作,
这样除了这个方法“VCL只能在主线程中访问,子线程要用用Synchronize操作VCL.参考DELPHI的DEMO”,真的没有可解决的方法吗?在线程里面给一个edit赋值都显示不是很正常。这样在线程里面要操作控件该怎么办呀。能从线程中暂停下,跑到主线程执行完再回来吗
http://topic.csdn.net/t/20020721/22/891559.html
解决了,非常感谢,长见识了,谢谢。