建子窗口时防止子窗口重复打开的问题!(50分)

  • 主题发起人 主题发起人 guming1
  • 开始时间 开始时间
G

guming1

Unregistered / Unconfirmed
GUEST, unregistred user!
我在菜单里写了:
with Form1 do
for I := form1.MDIChildCount-1 downto 0 do
if form1.MDIChildren.ClassName='Tform9' then
exit;
form9:=Tform9.Create(Application);
form9.Show;
form1是MDIForm, form9是MDIChild
可是子窗口还是可以重复建立!
我跟踪form1.MDIChildren.ClassName发现有值等于'Tform9',可不知怎么会事它不执行"exit"??
 
procedure OpenForm(FormClass: TFormClass; var AForm;
AOwner:TComponent=nil);
//根据窗口类名建立窗口,如果窗口存在则只激活它
var
i: integer;
Child:TForm;
begin
for i := 0 to Screen.FormCount -1 do
if Screen.Forms.ClassType=FormClass then
begin
Child:=Screen.Forms;
if Child.WindowState=wsMinimized then
Child.WindowState:=wsNormal;
Child.BringToFront;
Child.Setfocus;
TForm(AForm):=Child;
exit;
end;
Child:=TForm(FormClass.NewInstance);
TForm(AForm):=Child;
if not assigned(aowner) then aowner:=application;
Child.Create(AOwner);
end;
 
能帮我找找我的程序的错误吗?
 
begin
if form1.MDIChildren.ClassName='Tform9' then
exit;
end;
 
加begin ... end 没用的!
 
区分大小写的
试试
if UpperCase(form1.MDIChildren.ClassName)=UpperCase('Tform9') then
 
是大小写问题
if form1.MDIChildren.ClassName='TForm9' then //是TForm9 !!!!!!!!!
exit;
不过你的写法不好
如:
with Form1 do //这里还不如不写,要不就改为self
for I := form1.MDIChildCount-1 downto 0 do //form1同上
if form1.MDIChildren.ClassName='Tform9' then //form1同上
exit;
//同时,你不是跟踪了吗??那应该知道是 'TForm9'才对呀???
 
谢谢大家!
 
后退
顶部