[Back to DELPHI SWAG index] [Back to Main SWAG index] [Original]

    Okay, its late, and I've been playing with Delphi.  I just wrote out a
    simple little program that will allow you to control the size of a form when
    its maximized.  It does this in such a way as to remove the flickering that
    you see if you've been adjusting the size via the resize event.  Basically,
    this code traps the wm_getminmaxinfo message. To use this style form instead
    of the Delphi standard, simply compile the following text pascal file into a
    DCU. In then replace occurences of TForm with TMaxForm and add (if you
    called the pascal file maxform.pas) maxform to your uses clause.  Here
    now is the short program:

    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.

[Back to DELPHI SWAG index] [Back to Main SWAG index] [Original]