一个窗口的简单问题,如何在Formshow时关闭窗口,且不闪烁?(50分)

  • 主题发起人 主题发起人 Stewart
  • 开始时间 开始时间
S

Stewart

Unregistered / Unconfirmed
GUEST, unregistred user!
我习惯了在MFC的OnInitDialog里判断条件,并根据条件做不同的工作.
Q1.在 delphi中是应该在fromshow中判断么?
Q2.如果是,那么在条件不满足时,如何在窗口显示之前关闭窗口呢? 即窗口根本不出现就关了..
我用了self.close 没有反应.
用了PostMessage(handle,WM_CLOSE,0,0);倒是能关.但窗口非得闪烁一下才关.
请教各位高手,如何解决?我的Email:male_lu1@sian.com.cn.谢谢.
 
你想实现的功能是其实就是动态创建form.
 
你不应该在FormShow的时候做这种操作,而应该在FormCreate后进行判断
if True
FormShow
else
FormFree
 
动态创建FROM,就很容易实现控制
 
1.难道在Form内部就不能判断并操作了么?
比如界面上的数据必须从数据库读出,当数据库错误时,应该关闭Form.
难道非得在showmodal之前置所有的界面的值么?
2.什么叫动态创建Form?
 
在OnCreate中
 
procedure TForm1.Button1Click(Sender : TObject);
begin
Application.CreateForm(TForm2,Form2);//动态创建一个窗体
//在这里可以加入你任何代码,包括访问窗体上的控件及其属性
Form2.ShowModal;
Form2.Free;
end;

OK?
 
在创建窗体时进行判断并执行相应代码,完全可以实现你想要的效果。
 
这就是动态创建Form?,我几乎所有的Form都如此创建.
问题是,我想在Form生成后,再判断数据库,置界面上的值.
我不想在Form外部访问Form内的变量.我想保持一定的封装性,模块的独立性.
真的没办法了么?等到明天,如果没人知道?你们大家就把50分给分了吧

 
做个公共函数 myformshow(...),在FORMSHOW之前调用它,
if myformshow(...):=true then formshow
 
虽然没有得到满意的答复,但还是谢谢大家.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
774
import
I
后退
顶部