unit uBaseForm;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TPoint = record
x: Integer;
y: Integer;
end;
TMinMaxInfo = record
ptReserved: TPoint;
ptMaxSize: TPoint;
ptMaxPosition: TPoint;
ptMinTrackSize: TPoint;
ptMaxTrackSize: TPoint;
end;
TWMGetMinMaxInfo = record
Msg: Cardinal;
Unused: Integer;
MinMaxInfo: PMinMaxInfo;
Result: Longint;
end;
TBaseForm = class(TForm)
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
procedure WMGetMinMaxInfo(var Message: TWMGetMinMaxInfo ); message WM_GETMINMAXINFO;
end;
var
BaseForm: TBaseForm;
implementation
{$R *.dfm}
procedure TBaseForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
end;
procedure TBaseForm.WMGetMinMaxInfo(var Message: TWMGetMinMaxInfo);
begin
with Message.MinMaxInfo^ do
begin
//ptMaxSize.X := Screen.Width; {Width when maximized}
//ptMaxSize.Y := 200; {Height when maximized}
ptMaxPosition.X := 0; {Left position when maximized}
ptMaxPosition.Y := Application.MainForm.Height; {Top position when maximized}
//ptMinTrackSize.X := 100; {Minimum width}
//ptMinTrackSize.Y := 100; {Minimum height}
ptMaxTrackSize.X := Screen.Width; {Maximum width}
ptMaxTrackSize.Y := screen.Height - Application.MainForm.Height -25; {Maximum height}
end;
Message.Result := 0; {Tell windows you have changed minmaxinfo}
inherited;
end;
end.