Советы по Delphi

         

Управление максимизацией формы


...чтобы показать вам как это можно сделать, я создал небольшую программу, позволяющую управлять размером формы при ее максимизации. Она сделана таким образом, что позволяет исключить мигание, которое вы можете видеть при изменении ее размера в обработчике события OnResize. В основном, этот код работает с сообщением wm_getminmaxinfo, т.е. перехватывает и обрабатывает его. Для того, чтобы использовать данный стиль формы вместо стандартного стиля, принятого в Delphi, просто скомпилируйте следующий файл с паскалевским кодом в DCU-файл. Затем замените вашу стандартную TForm новой TMaxForm и добавьте (если вы назвали паскалевский файл maxform.pas) maxform в спискок используемых модулей. А теперь сам код описываемого модуля:

    unit Maxform;

interface

uses

SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs;
type
TMaxForm = class(TForm)

private { Private declarations } fmh, fmw, fml, fmt : word; procedure mymax(var m: TWMGETMINMAXINFO); message wm_getminmaxinfo; published property maxheight : word read mh write mh; property maxwidth  : word read mw write mw; property maxleft   : word read ml write ml; property maxtop    : word read mt write mt; constructor create(AOwner : TComponent); override; end;
implementation

procedure TMaxForm.mymax(var m : TWMGETMINMAXINFO);
begin
m.minmaxinfo^.ptmaxsize.x := fmw; m.minmaxinfo^.ptmaxsize.y := fmh; m.minmaxinfo^.ptmaxposition.x := fml; m.minmaxinfo^.ptmaxposition.y := fmt; end;

constructor TMaxForm.create(Aowner : TComponent);
begin
fmw := screen.width; fmh := screen.height; fmt := 0; fml := 0; inherited create(aowner); end;

end.

[001731]



Содержание раздела