findwindow 防止窗体 重复打开(70分)

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

sun100

Unregistered / Unconfirmed
GUEST, unregistred user!
我在主菜单的按钮 中加入
handle:THandle;
handle:=findwindow('Tczkzl','储值卡资料管理');
if handle=0 then
czkzl:=Tczkzl.Create(application)
else
setforegroundwindow(handle);
为什么 储值卡资料管理' 这个子窗体 还是能重复代开,
是不是findwindow 只能找到顶级窗体,找不到子窗体呢,如果是 使用什么函数找子窗体呢
 
handle:=findwindow('Tczkzl','储值卡资料管理');
这里有问题
findwindow有两个参数
HWND FindWindow(
LPCTSTR lpClassName, // pointer to class name
LPCTSTR lpWindowName // pointer to window name
);
所以你试试
handle:=findwindow('Tczkzl', nil);
 
用handle:=findwindow('Tczkzl', nil); 也是不能控制 不重复
 
直接判斷某個窗體是否為空不是可以
if not assigned(Form) then
顯示窗體
else
不顯示窗體
 
直接在打开哪个窗口前先FreeAndNil一次窗口,我是这样的`~OK的。
 
是啊,下次打开的时候,先关闭:
if handle <> 0 then
SendMessage(handle, WM_CLOSE, 0, 0)
else ...
 
for i:=0 to mainform.MDIChildCount-1 do
if mainform.MDIChildren.Name='czkzl' then
begin
czkzl.BringToFront;
exit;
end;
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部