如何打开一个已经关闭的子表单(50分)

  • 主题发起人 主题发起人 fartrip
  • 开始时间 开始时间
F

fartrip

Unregistered / Unconfirmed
GUEST, unregistred user!
我建立了一个主表单及一个子表单
我运行后先关掉子表单
但怎么样才能打开刚才关闭了子表单
多谢各位
 
运行程序里? MidiForm.show;
工程设计中?点那个一堆小窗口图标的快捷按钮,每一个窗体都能让它出来。
 
在程序运行时,
关闭一个子表单然后再打开它。
 
再次调用Show,如果你在关闭时的Action是为acFree的话,你还需要重新Create它
 
最好有源码。
 
在主表单中:
procedure TForm_main.TB_addrClick(Sender: TObject);
begin
if Form_addr=nil then
begin
datamoduleAll.Table_addr.Open;
if datamoduleAll.Table_addr.Active=true then
Form_addr:=TForm_addr_M.Create(Application) ;
Form_addr.Caption:='通讯录';
end
else
Form_addr.BringToFront;
end;

在子表单中:
procedure TForm_addr_M.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Free;
Form_addr:=nil;
end;
 
再次创建.
 
你的表达能力有点那个,至少我没看懂!
 
在工程文件中去掉:Application.CreateForm(TForm2, Form2);

procedure TForm1.Button1Click(Sender: TObject);
begin
if form2=nil then
begin
Application.CreateForm(TForm2, Form2);
form2.FormStyle :=fsstayontop;
form2.Show;
end;
end;

procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
form2:=nil;
action:=cafree;
end;
 
有多种方法可以做到,这主要与你的设计思想有关。

方法一:
  建议用Frame:则只要用BringTFront 和ReturnBack 就可以控制。当然
两个窗体的大小应该一样。把Frame附属在Page控件上。

方法二:
  一般的From:则初创有分无模式与有模式窗体。前者用Show方法
后者用ShowModal; 所以只要窗体没有释放,则用Show方法可以重现。否则
要重建再显示。
 
多人接受答案了。
 
后退
顶部