看看有没有办法解决(100分)

  • 主题发起人 主题发起人 留香客
  • 开始时间 开始时间

留香客

Unregistered / Unconfirmed
GUEST, unregistred user!
我在多线乘中使用模式窗口,结果不能返回,如下:
function tmytread.execute;
var
MyValue:integer;
begin
MyValue:=form2.QueryValue;
end;

在FORM2中:
var
ReturnValue:integer;
function Tform2.QueryValue:integer;
begin
form2.showmodal;
result:=ReturnValue;
form2.close;
end;
procedure Tform2.Btn1.click(sender as object);
begin
ReturnValue:=1;
form2.close;
end;
运行之后点击Tform2.Btn1关不掉form2,如何解决?
 
form2的onclose事件
action:=cafree;
 
我试过不行啊
 
可能你的线程处于死循环,应该在Form2的Btn1的Click之后终止线程。
 
procedure Tform2.Btn1.click(sender as object);
begin
ReturnValue:=1;
ModalResult := mrOk;
end;
 
你的form2的windowhandle是在线程中创建的,因此所有该窗口的消息都发送给那个线程了,而你线程中并没有处理消息的模块,当然没有反应啦。
因此你的线程代码中至少得包含下述循环体才行:
while getmessage(msg, 0, 0, 0)do
begin
translatemessage(msg);
dispatchmessage(msg);
end;
 
多人接受答案了。
 
后退
顶部