...чтобы показать вам как это можно сделать, я создал небольшую программу, позволяющую управлять размером формы при ее максимизации. Она сделана таким образом, что позволяет исключить мигание, которое вы можете видеть при изменении ее размера в обработчике события 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]