第 8 章 窗体编程
·221·
为“新建”菜单项添加建立新 ChildForm 的代码:
procedure TMainForm.O1Click(Sender: TObject);
begin
CreateMDIChild(’NoName’ + IntToStr(MDIChildCount + 1));
end;
保存并运行程序,可以看到主窗体的菜单项原本只有“文件”、“窗口”、“帮助”3 项,而选择“新
建”菜单命令后,在主窗口菜单“文件”和“窗口”的中间增加了“编辑”菜单项,这个“编辑”菜
单项就是原 ChildForm 窗体的菜单,这样的操作后就完成了两个菜单的合并,效果如图 8-8 所示。
图 8-8 合并菜单项
读者可能会发现建立的子窗体在单击关闭按钮时,子窗体只能最小化,而不是关闭,这是因为没
有将子窗体释放,若要关闭子窗体,可以在 ChildForm 的 OnClose 事件中编写如下代码:
procedure TChildForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action:=caFree;
end;
注意:根据菜单项 GroupIndex 属性值,可以定制菜单项显示的位置。例如上面的例子“编
辑”菜单显示在“文件”与“窗口”菜单中间。
3.在菜单中列出打开的文档
在 MDI 程序中可以打开多个子窗体,而子窗体都显示在父窗体的用户区内,要将某一个窗体设置
为当前编辑窗体,只靠人工按顺序切换查找很费时,所以可以将主窗体的某个菜单项设置显示已经打
开的子窗体的名称列表,以方便用户操作。例如要把打开的文档列在“窗口”菜单项下,需要把主窗
体的 WinDowMenu 属性设为“窗口”菜单项的组件名。
继续上面的 MDI 程序的设计,MainForm 的 WindowMenu 属性被设为 WindowM(即菜单栏上的
“窗口”菜单),在主窗口中打开的子窗口文档将排列有“窗口”菜单项的下部,如图
8-9 所示。
图 8-9 在菜单中列出打开的文档
Click to buy NOW!
P
D
F
-
X
C
h
a
n
g
e
V
i
e
w
e
r
w
w
w
.
d
o
c
u
-
t
r
a
c
k
.
c
o
m
Click to buy NOW!
P
D
F
-
X
C
h
a
n
g
e
V
i
e
w
e
r
w
w
w
.
d
o
c
u
-
t
r
a
c
k
.
c
o
m