哎,老大们,怎么样防止创建窗体的多个实例啊??(50分)

  • 主题发起人 主题发起人 ldwolf
  • 开始时间 开始时间
L

ldwolf

Unregistered / Unconfirmed
GUEST, unregistred user!
我丢了一个MDI子窗体在主窗体里头,但取消了他的自动创建
然后在动态创建一些窗体,来继承这个MDI子窗体.
但是判断窗体是否存在的代码往哪儿写啊??写在窗体被实例化以前会出错啊??
 
试试写在新建按钮(或菜单项)的Click事件中
 
可我是在新建按钮(或菜单项)的Click事件中来对窗体实例化的啊
 
在新建按钮(或菜单项)的Click事件中对子窗体实例化前判断。
if not bExist then
子窗体.CREATE;
 
哎,代码真不好贴啊,贴出来更说不明白,能不能给段源码看看啊?
实现防止创建窗体的多个实例就行。。。。。
 
不是非常明白你的意思,如果一共只有一个子窗口,那可以这样判断
procedure TForm1.Menu1Click(Sender: TObject);
begin
if MDIChildCount = 0 then
//子窗口还没有
MDIChild := TMDIChild.Create(Self);//创建
end;
如果有多个子窗体,并且类名不一样,那可以这样:
procedure TForm1.Menu1Click(Sender: TObject);
var
I: integer;
begin
for I := 0 To MDIChildCount - 1 do
if MDIChildren is TMDIChild then
exit;
//假设类名是TMDIChild,如果已经有了,那就退出
MDIChild := TMDIChild.Create(Self);//创建
end;
 
这样肯定可以
if not AsSigned(窗体名称) then
begin
XXX:=TXXX.Create(Application)
XXX.SHOW
end else
SHOWMESSAGE('已经创建');'
 
Agree up,up!
 
注意:、
在xxx.free后,AsSigned(窗体名称) := true;
增加一句:xxx := nil;
 
使用原子是最简单最方便的方法
 
问题太久,强制结束,发分罗!见者有分!
每天发分无数,永远真诚服务,大富翁电信
 
后退
顶部