一个MDI程序,怎么样才能不让子窗体重复出现!关闭子窗口总是关不掉!(30分)

  • 主题发起人 主题发起人 易名烦
  • 开始时间 开始时间

易名烦

Unregistered / Unconfirmed
GUEST, unregistred user!
尽量简单好吧?
 
[red]在onclose事件中写上Action:=cafree;[/red]
不要使用SHOWMODAL
 
这个问题很简单的,也不用很复杂的程序,不要使用“SHOWMODAL”显示是其一。
再一个是要:在ONCLOSE事件中写上ACTION:=CAFREE;
 
action:=cafree;
这个是学mdi必须会的啊。
 
screen是指的什么,我所做的程序主界面?
 
笨,当然不是你的程序的主界面,是指当前屏幕,桌面啦
 
我的问题啊,怎么才能使子窗体不重复出现!
 
看来他们只是回答了你一半的问题。
这里有一个笨办法。(不过可以变通的)
打开窗口的时候:
if not ChildFormTest('报表输出') then
PBCOutReportForm := TPBCOutReportForm.Create(self);
PBCOutReportForm.Show;

ChildFormTest的定义
function TMainForm.ChildFormTest(FormName :string):boolean;
var i:integer;
find :boolean;
begin
find:= false; //确定是否找到
if MainForm.MDIChildCount >=1 then
begin
for i:=0 to MainForm.MDIChildCount-1 do
begin
if MainForm.MDIChildren.Caption = FormName then
//这一句你可以任意定义条件的,不一定要用Caption
begin
find := true;
break;
end;
end;
end;

Result := find;
end;
 
(1)关闭子窗体是在子窗体的onclose事件中加action:=cafree;
(2)使子窗体不重复出现,是在打开子窗体时判断有没有打开子窗体,下面是我程序中一段:

if application.FindComponent('NewFrm')=nil then
begin
NewFrm:=TNewFrm.Create(Application);
NewFrm.Show;
end
else
begin
ShowWindow(NewFrm.Handle,SW_SHOWMAXIMIZED);
NewFrm.BringToFront;
NewFrm.SetFocus;
end;
 
低手向高手致敬!
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部