请问如何将一个窗体嵌入另一个窗体的client区? I'm a newbie in Delphi.比如主窗体已经有工具栏、菜单栏、在左侧还有一个outlook样式的组件。我想点左侧的按钮,在右侧的client区显示另一个窗体,请问这如何做到? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 var form :TForm;begin form := TForm.Create(Self); form.parent := Form1; form.Left := 你要显示的位置; form.Top := 同上; form.Right := 同上; form.bottom := 同上;end; 可以的。比如你在client放一个panel,然后使你想创建的窗口的parent=这个panel就可以了--------------------------------------------------------------------看尽悲伤,庸人自扰不平事。叹尽荒凉,海阔天空谁人知。狂风劲兮,百花飘扬乱舞香。捏花一笑,海不扬波断肠心! 可以。。这是我写的原码,,不仅能完成你说的功能,还可以再不同分辨率自动居中。unit ChildFrm;interfaceuses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, Menus,math;type TChildForm = class(TForm) Panel1: TPanel; procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormDestroy(Sender: TObject); procedure WMWindowPosChanging(var msg:TWMWindowPosChanging); message WM_WINDOWPOSCHANGING; procedure FormResize(Sender: TObject); private FAsChild: Boolean; FTempParent: TWinControl; procedure CentalPanel; protected procedure CreateParams(var Params: TCreateParams); override; procedure Loaded; override; public constructor Create(AOwner: TComponent); overload; override; constructor Create(AOwner: TComponent; AParent: TWinControl); reintroduce; overload; // The method below must be overriden to return either the main menu // of the form, or nil. function GetFormMenu: TMainMenu; virtual; abstract; function CanChange: Boolean; virtual; end;var ChildForm: TChildForm;implementation{$R *.DFM}procedure TChildForm.CentalPanel;begin if panel1.Width < ClientWidth then panel1.Left := (ClientWidth - panel1.Width ) div 2 else panel1.Left := 0; if panel1.Height <ClientHeight then panel1.Top :=(ClientHeight - panel1.Height ) div 2 else panel1.Top := 0;end;procedure TChildForm.WMWindowPosChanging(var msg:TWMWindowPosChanging);var CaptionHeight:integer;begin CaptionHeight := GetSystemMetrics(SM_CYCAPTION); msg.WindowPos ^.cx :=Max(msg.WindowPos ^.cx,panel1.Width+20); msg.WindowPos ^.cy :=Max(msg.WindowPos ^.cy,panel1.Height+20+CaptionHeight); inherited;end;constructor TChildForm.Create(AOwner: TComponent);begin FAsChild := False; inherited Create(AOwner);end;constructor TChildForm.Create(AOwner: TComponent; AParent: TWinControl);begin FAsChild := True; FTempParent := aParent; inherited Create(AOwner);end;procedure TChildForm.Loaded;begin inherited; if FAsChild then begin align := alClient; BorderStyle := bsNone; BorderIcons := []; Parent := FTempParent; Position := poDefault; end;end;procedure TChildForm.CreateParams(var Params: TCreateParams);Begin Inherited CreateParams(Params); if FAsChild then Params.Style := Params.Style or WS_CHILD;end;function TChildForm.CanChange: Boolean;begin Result := True;end;procedure TChildForm.FormClose(Sender: TObject; var Action: TCloseAction);beginaction :=cafree;end;procedure TChildForm.FormDestroy(Sender: TObject);begin ChildForm :=nil;end;procedure TChildForm.FormResize(Sender: TObject);begin CentalPanel;end;end.给分吧!!! 我重载了窗体的创建方法当创建时,要指定一个panel容器上。如: ChildForm:=tChildForm.Create(self,frmmain.panel1); ChildForm.show; 我引用了子窗体单元。子窗体中有一个适应整个窗体的groupbox1,但是使用以下代码之后这个groupbox不能再根据子窗体的client的大小而变了。uses unitChild;然后 frmChild.Parent:=frmMain.Panel1; frmChild.Show; Stringgrid显示问题 数据录入的错误提示:急急!!! 安装delphi7后,组件栏上缺乏QReport模板,请各位指点!本人初学 寻求魔力宝贝窗口登陆以及多开程序的原理和代码 如何获取页面文本? 我现在从桌面抓了一张图片 请问如何把stringgrid的内容打印成报表! 关于treeview.data不能正确携带数据的问题(急) 请问谁有松下FP0 plc的通信资料,或者代码,在下急需,多谢啦 如何判断控件是否获得焦点? 请教,我的程序为何常常会突然退出? 非常急!请大家多帮忙!如何用delphi编写播放mov的文件的程序?
form :TForm;
begin
form := TForm.Create(Self);
form.parent := Form1;
form.Left := 你要显示的位置;
form.Top := 同上;
form.Right := 同上;
form.bottom := 同上;
end;
比如你在client放一个panel,然后使你想创建的窗口的parent=这个panel就可以了--------------------------------------------------------------------
看尽悲伤,庸人自扰不平事。叹尽荒凉,海阔天空谁人知。狂风劲兮,百花飘
扬乱舞香。捏花一笑,海不扬波断肠心!
这是我写的原码,,不仅能完成你说的功能,还可以再不同分辨率自动居中。
unit ChildFrm;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls,
Forms, Dialogs, StdCtrls, ExtCtrls, Menus,math;type TChildForm = class(TForm)
Panel1: TPanel;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormDestroy(Sender: TObject);
procedure WMWindowPosChanging(var msg:TWMWindowPosChanging);
message WM_WINDOWPOSCHANGING;
procedure FormResize(Sender: TObject);
private
FAsChild: Boolean;
FTempParent: TWinControl;
procedure CentalPanel;
protected
procedure CreateParams(var Params: TCreateParams); override;
procedure Loaded; override;
public
constructor Create(AOwner: TComponent); overload; override;
constructor Create(AOwner: TComponent; AParent: TWinControl); reintroduce; overload; // The method below must be overriden to return either the main menu
// of the form, or nil.
function GetFormMenu: TMainMenu; virtual; abstract;
function CanChange: Boolean; virtual;
end;var
ChildForm: TChildForm;implementation{$R *.DFM}
procedure TChildForm.CentalPanel;
begin if panel1.Width < ClientWidth then
panel1.Left := (ClientWidth - panel1.Width ) div 2
else
panel1.Left := 0;
if panel1.Height <ClientHeight then
panel1.Top :=(ClientHeight - panel1.Height ) div 2
else
panel1.Top := 0;end;
procedure TChildForm.WMWindowPosChanging(var msg:TWMWindowPosChanging);
var
CaptionHeight:integer;
begin
CaptionHeight := GetSystemMetrics(SM_CYCAPTION);
msg.WindowPos ^.cx :=Max(msg.WindowPos ^.cx,panel1.Width+20);
msg.WindowPos ^.cy :=Max(msg.WindowPos ^.cy,panel1.Height+20+CaptionHeight);
inherited;
end;constructor TChildForm.Create(AOwner: TComponent);
begin
FAsChild := False;
inherited Create(AOwner);
end;constructor TChildForm.Create(AOwner: TComponent; AParent: TWinControl);
begin
FAsChild := True;
FTempParent := aParent;
inherited Create(AOwner);
end;procedure TChildForm.Loaded;
begin
inherited;
if FAsChild then
begin
align := alClient;
BorderStyle := bsNone;
BorderIcons := [];
Parent := FTempParent;
Position := poDefault;
end;
end;procedure TChildForm.CreateParams(var Params: TCreateParams);
Begin
Inherited CreateParams(Params);
if FAsChild then
Params.Style := Params.Style or WS_CHILD;
end;function TChildForm.CanChange: Boolean;
begin
Result := True;
end;procedure TChildForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
action :=cafree;
end;procedure TChildForm.FormDestroy(Sender: TObject);
begin
ChildForm :=nil;
end;procedure TChildForm.FormResize(Sender: TObject);
begin
CentalPanel;
end;end.给分吧!!!
当创建时,要指定一个panel容器上。如:
ChildForm:=tChildForm.Create(self,frmmain.panel1);
ChildForm.show;
uses
unitChild;然后
frmChild.Parent:=frmMain.Panel1;
frmChild.Show;