mdi窗体问题(50分)

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

liugaohui

Unregistered / Unconfirmed
GUEST, unregistred user!
请教各位大哥,如何使mdi程序在启动时不显示子窗体或指定显示某个窗体,如何实现在主窗体上的一个按钮可以关闭一个子窗体或多个子窗体,谢谢回复
 
1.在project -》options-》autoCreate form控制
2.for i:=1 to Self.MDIChildCount-1 do
Self.MDIChildren//来控制
 
让子窗体不自动创建(在project->options->autoCreate form控制),由程序动态创建,例如:
主窗体:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus;

type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
File1: TMenuItem;
new1: TMenuItem;
window1: TMenuItem;
Cascade1: TMenuItem;
procedure Cascade1Click(Sender: TObject);
procedure new1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

uses
Unit2;

procedure TForm1.Cascade1Click(Sender: TObject);
begin
Cascade
end;

procedure TForm1.new1Click(Sender: TObject);
var
Form2:TForm2;
begin
Form2 := TForm2.Create(Self);
Form2.Caption := TimeToStr(Now);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Form1.WindowMenu := window1;
end;

end.

******************************************************************
子窗体:
unit Unit2;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;

type
TForm2 = class(TForm)
procedure FormClose(Sender: TObject
var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.FormClose(Sender: TObject
var Action: TCloseAction);
begin
Action := caFree;
end;

end.

其中window1为主菜单中的一个顶端菜单项,即“window”,window1下边还有一个“Cascade”菜单项,即平铺,window1赋值给Form1.WindowMenu后,每打开一个子窗口Delphi都会在window1下增加一个和Cascade平级的菜单项,就像一般的MDI程序一样,另外window1菜单项下一定得有一个其他菜单项(如:Cascade),否则是不能工作的。
 
关闭所有子窗口:
var
iLoop:Integer;
begin
for iLoop := winMain.MDIChildCount - 1 downto 0 do
winMain.MDIChildren[iLoop].Close
……
 
大哥,我不会回答别人的问题,怎样才能得到分?
 
后退
顶部