Форма является дочерней для панели
Автор: Xavier Pacheco
{
Copyright © 1998 by Delphi 4 Developer"s Guide - Xavier Pacheco and Steve Teixeira
}
unit NewChildFrm;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ChildFrm, ExtCtrls;
type
TNewChildForm = class (TChildForm)
Image1: TImage;
private
{ Private declarations }
public
{ Public declarations }
end ;
var
NewChildForm: TNewChildForm;
implementation
{$R *.DFM}
end .
{
Copyright © 1999 by Delphi 5 Developer"s Guide - Xavier Pacheco and Steve Teixeira
}
unit ChildFrm;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls,
Forms, Dialogs, StdCtrls, ExtCtrls, Menus;
type
TChildForm = class (TForm)
private
FAsChild: Boolean;
FTempParent: TWinControl;
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 overridden 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}
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 ;
end .
{
Copyright © 1999 by Delphi 5 Developer"s Guide - Xavier Pacheco and Steve Teixeira
}
unit MainFrm;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls, NewChildFrm;
type
TMainForm = class (TForm)
pnlMain: TPanel;
Splitter1: TSplitter;
pnlParent: TPanel;
btnNormal: TButton;
btnChild: TButton;
btnFree: TButton;
procedure btnNormalClick(Sender: TObject);
procedure btnChildClick(Sender: TObject);
procedure btnFreeClick(Sender: TObject);
private
FNewChildForm: TNewChildForm;
public
{ Public declarations }
end ;
var
MainForm: TMainForm;
implementation
{$R *.DFM}
procedure TMainForm.btnNormalClick(Sender: TObject);
var
LocalChildForm: TNewChildForm;
begin
LocalChildForm := TNewChildForm.Create(Application);
try
LocalChildForm.ShowModal;
finally
LocalChildForm.Free;
end ;
end ;
procedure TMainForm.btnChildClick(Sender: TObject);
begin
if not Assigned(FNewChildForm) then
begin
FNewChildForm := TNewChildForm.Create(Application, pnlParent);
FNewChildform.Show;
pnlParent.Height := pnlParent.Height - 1;
end ;
end ;
procedure TMainForm.btnFreeClick(Sender: TObject);
begin
if Assigned(FNewChildForm) then
begin
FNewChildForm.Free;
FNewChildform := nil ;
end ;
end ;
end .
Скачать весь проект
Если Вас заинтересовала или понравилась информация по разработке на Delph - "Форма является дочерней для панели", Вы можете поставить закладку в социальной сети или в своём блоге на данную страницу:
Так же Вы можете задать вопрос по работе этого модуля или примера через форму обратной связи , в сообщение обязательно указывайте название или ссылку на статью!