如何实现打开一个窗体时进行判断,如果满足条件则显示,不满足则关闭。我这样写不行,请各位高手指正。procedure Tf_update.RzBitBtn1Click(Sender: TObject);
begin
if 条件 then
……
else
Close;
end;procedure Tf_update.RzBitBtn2Click(Sender: TObject);
begin
Close;
end;procedure Tf_update.FormShow(Sender: TObject);
begin
RzBitBtn1Click(Sender);
end;
begin
if 条件 then
……
else
Close;
end;procedure Tf_update.RzBitBtn2Click(Sender: TObject);
begin
Close;
end;procedure Tf_update.FormShow(Sender: TObject);
begin
RzBitBtn1Click(Sender);
end;
可以试下如下方法:
1)把你的事件写在FormCreate中
2)把你的事件写在FormActive中
3)如果是通过按钮进行,可以先判断条件,然后用Hide、Show方法
如下:
Procedure ButtonClick
begin
if 你的条件 then
begin
YourForm.Show;
end
else
YourForm.Hide;
end;
1. 在窗体打开之前判断。
if 条件满足 then
YourForm.Show //.ShowModal;
else
做其他处理,或什么也不做。2. 在YourForm中创建计时器,在OnTimer()事件里处理是否需要打开窗体。
var
i:integer;
begin
for i:=0 to main.MDIChildCount do
begin
// 通过对窗体标题判断窗体是否存在
if main.MDIChildren[i].Caption=caption then
begin
//如果窗体已存在,则恢复窗体,并返回true
SendMessage(mdichildren[i].Handle, WM_SYSCOMMAND, SC_restore, 0);
mdichildren[i].Enabled:=true;
mdichildren[i].Show;
mdichildren[i].SetFocus;
result:=true;
break;
end
else
//如窗体不存在,则返回false,程序将创建窗体
result:=false;
end
end;
-------------
procedure Tmain.N2Click(Sender: TObject);
var
newform:TSecSetting;
begin
if findForm('会计科目设置')=false then
begin
//若窗体不存在,则创建窗体
newform:=Tsecsetting.Create(application);
newform.Caption:='会计科目设置';
end;
end;//判断是否存在窗体并创建
frm: TMyForm;
begin
frm := TMyForm.Create;
if frm.CanShowModal then
frm.ShowModal;
end;2 在FormShow中判断 调用PostMessage(self.Handle,WM_QUIT,0,0)关闭