Каждую дочернюю форму заставить полностью заполнять область главной

{codecitation class=»brush: pascal; gutter: false;» width=»600px»}

Оформил: DeeCo

Автор: http://www.swissdelphicenter.ch

unit Unit1;

interface

uses

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

type

TMDIForm = class(TForm)

private

{ Private declarations }

FMainWindowClientCoordinates: TRect;

procedure SetMainWindowClientCoordinates(const Value: TRect);

procedure NewChild(Sender: TObject);

public

{ Public declarations }

// property used to read MainForm client coordinates

property MainWindowClientCoordinates: TRect

read FMainWindowClientCoordinates write SetMainWindowClientCoordinates;

end;

var

MDIForm: TMDIForm; // Main form, property «formStyle» has to be fsMdiForm

implementation

{$R *.DFM}

uses

Child; // Defines TMDIchild class, property «formStyle» has to be fsMdiChild

procedure TMDIForm.SetMainWindowClientCoordinates(const Value: TRect);

begin

FMainWindowClientCoordinates := Value;

end;

procedure TMDIForm.SetMainWindowCoordinates(const Value: TRect);

begin

FMainWindowCoordinates := Value;

end;

procedure TMDIForm.FormShow(Sender: TObject);

begin

// Reads MDIForm client coordinates

Windows.GetClientRect(ClientHandle, fMainWindowClientCoordinates);

end;

procedure TMDIForm.NewChild(Sender: TObject);

var

LocalMDIChildForm: TMDIChildForm;

begin

// You can execute this procedure each time you

// create a new child, for example you can call this

// procedure from a button

LocalMDIChildForm := TMDIChildForm.Create(Self);

with LocalMDIChildForm do

begin

Caption := ‘Child Form: ‘ IntToStr(MDIChildCount);

Top := MainWindowClientCoordinates.Top;

Left := MainWindowClientCoordinates.Left;

Width := MainWindowClientCoordinates.Right;

Height := MainWindowClientCoordinates.Bottom;

Show;

end; // with …

end;

end.

{/codecitation}

Добавить комментарий