Rolling up a form

The standard behaviour for double clicking a title bar is to maximize/restore the form. The following class changes the double click action to add a new effect which is RollUp/Restore.

Copy the following unit and place it in a directory which is recognised by delphi's search path (i.e. \Delphi\5.0\Lib\)



unit OrckaForm;



interface



{$B-}



uses

  Messages, Forms, Classes;



type

  TOrckaForm = class(TForm)

  private

    FOldHeight: Longint;

    FRollUp, FRolledUp: Boolean;

  protected

    procedure WMNCLDblClick(var Msg: TMessage); message WM_NCLBUTTONDBLCLK;

    procedure WMGetMinMaxInfo(var Msg: TMessage); message WM_GETMINMAXINFO;

  public

    constructor Create(AOwner: TComponent); override;

    property RollUp: Boolean read FRollUp write FRollUp;

  end;



implementation



uses Windows;



procedure TOrckaForm.WMNCLDblClick(var Msg: TMessage);

begin

  if (Msg.wParam = HTCAPTION) and (FRollUp) then

  begin

    if FRolledUp then

    begin

      FRolledUp := False;

      Height := FOldHeight;


    end else

    begin

      FRolledUp := True;

      FOldHeight := Height;

      Height := 0

    end;

  end else

    inherited;

end;



constructor TOrckaForm.Create(AOwner: TComponent);

begin

  inherited Create(AOwner);

  FOldHeight := Height;

  FRollUp := True;

  FRolledUp := False;

end;



procedure TOrckaForm.WMGetMinMaxInfo(var Msg: TMessage);

begin

  inherited;

  if FRolledUp then

    pMinMaxInfo(Msg.lParam)^.ptMaxTrackSize.y := Height;

end;



end.





To use the form create a new form which will look something like..



unit Unit3;



interface



uses

  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;



type

  TForm3 = class(TForm)

  private

    { Private declarations }





Add OrckaForm to the uses clause and change the following line



TForm3 = class(TForm)

to

TForm3 = class(TOrckaForm)



run your project, whenever you double click the title the form will roll up/restore.

 

Share this article!

Follow us!

Find more helpful articles: