怎么在函数中创建非模式窗体,等窗体关闭后函数再返回:(怎么?很难吗 (50分)

  • 主题发起人 主题发起人 ysai
  • 开始时间 开始时间
Y

ysai

Unregistered / Unconfirmed
GUEST, unregistred user!
如题,不要用TTimer和Application.ProcessMessages
 
没有明白你的意思。showmodal可以有返回值的
 
在Onclose事件中将控件中的值赋给相应的变量。或直接获得计算结果。
在函数中还可设置同步控制,窗口未关闭,函数不返回。
 
我不要ShowModal,因为我的非主窗体都是非模式的,现在要从TChildForm中继承
一个登录窗体,是检查密码,不能是模式!主窗体调用一个函数创建窗体但不返回
等密码检查成功或失败再返回(成功则可更改设置)
 
什么意思?你难道不可以在OnClose里面返回?
如果你要仿造ShowModal就参见他的VCL代码,如果要求能够同时显示多个窗口
就在关闭的时候返回值。
 
在你需要创建模式窗体的方法中创建模式窗体:
var
ModalForm: TModalForm;
begin
ModalForm := TModalForm.Create(nil);
try
if ModalForm.ShowModal = mrOk then
begin
//your code
end;
finally
ModalForm.Free();
end;
end;

在模式窗体的ModalResult中赋值mrOK
 
登錄窗體為什么要搞成非模式的呢?

用模式窗體不很好么?

而且控制也方便
 
有没有搞错,不要灌水,我是要解决实际问题
不是ShowModal,是Show!!!!!
 
舍近求远!
 
不好意思,没有看清你的题目。
可以设一个全局变量,如果登陆窗体输入合法 ,则返回true
否则false
 
TO:desertsmoke
不是舍近求远
你没发现DELPHI的ShowModal后最小化和还原有问题?
就是因为TApplaction的问题

TO:lzhuan
这个我当然知道,但是那还是ShowModal才能行得通!
 
就是置全局變量也可以呵

主窗體等待過程中用
while not Loginform.return do
Application.ProcessMessages;

不知道你為何不用Application.ProcessMessages

 
你不知道用ProcessMessages很占系统资源吗?
 
不是给你答案了,用同步处理,等窗口关闭后函数返回。
 
发消息!不想用全局变量的话!
 
用多线程
 
TO:xusong168
不用那么麻烦吧,有没有API函数可以用?
 
依你的条件,必须用多线程,否则消息在哪里处理?
 
没有其它办法吗?
 
后退
顶部