关键问题: 当调用其他窗体时,当前窗体怎样自动关闭? (50分)

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

lcl800

Unregistered / Unconfirmed
GUEST, unregistred user!
多窗口问题
1 现有若干窗体,需要用菜单调用,每次调用时,
不显示子窗体的标题栏。应该如何操作?
2 当调用其他窗体时,当前窗体怎样自动关闭?(关键问题)
3 系统菜单与普通菜单有什么区别?
我用的是SDI
我的问题是:当用菜单调用之后,A窗体显示;随后调用B窗体,这都正常。
但如果再调用A窗体,由于B窗体在A窗体之前,故A窗体不能显示出来。
所以必须关闭显示的非当前窗体.
效果类似于在VF中的窗体调用。
按照Another_eYes的建议,我写了下列两个调用程序:
procedure Tmain.FormCreate(Sender: TObject);
begin
main.Parent:=w_main;
end;

procedure Tw_main.N1Click(Sender: TObject);
begin
w_main.Show;

w_main.BringToFront;
end;
procedure Tw_main.N2Click(Sender: TObject);
begin
main.Show;
main.BringToFront;
end;

开始显示w_main
然后现实main
但却不能再显示w_main

 
不显示标题栏?啥意思?窗体none不就没了:).
 
BorderStyle:=bsNone;
 
当调用其他窗体时,当前窗体怎样自动关闭?
系统菜单与普通菜单有什么区别?
 
是MDI么?
子窗体frmZ,父窗体frmF
frmZ := TfrmZ.Create(frmF);
frmZ.BorderStyle := bsNone;
frmZ.Parent := frmF;
frmZ.Show;
应该就可以了。
 
当前form.hide;
 
应该是在调用其他窗体的时候,找到当前的子窗体后关闭。
var
ActiveZfrm: TForm;
每次创建新的之后
if Assigned(ActiveZfrm) then
FreeAndNil(ActiveZfrm);
ActiveZfrm := Zfrm;
 
我用的是SDI
我的问题是:当用菜单调用之后,A窗体显示;随后调用B窗体,这都正常。
但如果再调用A窗体,由于B窗体在A窗体之前,故A窗体不能显示出来。
所以必须关闭显示的非当前窗体。
效果类似于在VF中的窗体调用。

 
为什么要关闭呢? aform.bringtofront
 
同意楼上的
系统菜单是指点击窗口标题栏左上角时弹出的那个菜单
调用getsystemmenu可以获得该菜单
 
按照Another_eYes的建议,我写了下列两个调用程序:
procedure Tw_main.N1Click(Sender: TObject);
begin
w_main.Show;

w_main.BringToFront;
end;
procedure Tw_main.N2Click(Sender: TObject);
begin
main.Show;
main.BringToFront;
end;

开始显示w_main
然后现实main
但却不能再显示w_main
 
关键问题没有解决.
下列方法不行!
var
ActiveZfrm: TForm;
每次创建新的之后
if Assigned(ActiveZfrm) then
FreeAndNil(ActiveZfrm);
ActiveZfrm := Zfrm;
错误提示:
---------------------------
Debugger Exception Notification
---------------------------
Project ldgl2.exe raised exception class EAccessViolation
with message 'Access violation at address 0012FBF9.
Read of address 0025F538'. Process stopped.
Use Step or Run to continue.
---------------------------
OK Help
---------------------------
 
因为你的是SDI,所以,可以在宿主窗体[red]类[/red]里维护一个ActiveChildForm全局对象指针,
用它作所有TForm类的实例。
这样,每次新创建TForm类实例前,先释放这个实例,然后再创建,将新实例的
指针赋值给它即可。
 
还有,释放ActiveChildForm实例后,应当立即赋值为Nil.
 
Another_eYes-5,lcl_003-5,
shenloqi-10,stargazer-10,
WangBingBing-5,yoking-5,ysai-5,三点-5,
 

Similar threads

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