...ein MDIChild die ganze Fläche der Client Area einer Hauptform ausfüllen lassen?
Autor: Carlos Borrero
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.
printed from
  www.swissdelphicenter.ch
  developers knowledge base