MDI中為何子窗體無法隱藏﹖(50分)

  • 主题发起人 主题发起人 jeff86
  • 开始时间 开始时间
J

jeff86

Unregistered / Unconfirmed
GUEST, unregistred user!
MDI中為何子窗體無法隱藏﹐close 事件中 Action :=caHide,會有錯誤提示﹐該如何﹖
 
Action :=caFree
 
隐藏用
ShowWindow(Handle,SW_HIDE);
显示用
ShowWindow(Handle,SW_SHOW);
PS:MDI子窗体有缺陷(OFFICE2000后不用这个结构了).M$说的,在VB中可以直接HIDE,DELPHI中不行
 
根本就不能隐藏,直接释放不就了了
 
对,是这样的,mdi child不能hide
 
不自动创建才可以的。手动创建的就可以隐藏。
 
我同意ysai的观点,你不妨试一下。
 
有没搞错,概念性错误,MDI子窗体本来就不能Hide的,是MS做死了的。
 
西安科技学院万重老师有源码,自己下栽研究一下,

procedure OpenForm(FormClass: TFormClass;
var fm;
AOwner:TComponent);
var
i: integer;
Child:TForm;
begin
for i := 0 to Screen.FormCount -1do
if Screen.Forms.ClassType=FormClass then
begin
Child:=Screen.Forms;
if Child.WindowState=wsMinimized then
ShowWindow(Child.handle,SW_SHOWNORMAL)
else
ShowWindow(Child.handle,SW_SHOWNA);
if (not Child.Visible) then
Child.Visible:=True;
Child.BringToFront;
Child.Setfocus;
TForm(fm):=Child;
exit;
end;
Child:=TForm(FormClass.NewInstance);
TForm(fm):=Child;
Child.Create(AOwner);
end;
建立窗体。

procedure Tfrm_Address.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Query1.Close;
table1.Close;
with Mainformdo
begin
// StatusBar.Panels[1].Text:='通讯录已关闭闭';
if MDIChildCount=1 then
StatusBar.Panels[1].Text:='';
end;
Action:=caFree;
end;
以下是万重老师的联系方式:
地址:西安科技学院143信箱
邮编:710054
网址:www.tenew.com 或 http://homepage.2699.com/home0/mantousoft
邮箱:webmaster@tenew.com 或 mantousoft@163.com
OICQ:6036742
 
你是要什么情况下隐藏,是最小化时还是关闭子窗体时隐藏,如果是最小化时你就必须要
拦截最小化事件,如果是关闭就比较简单
 

Similar threads

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