- - * - WhiteUnicorn - * - -




* #WhiteUnicorn/ StartPage/ Documentation/DelphiFAQ >


3235:Minimizing Application When a Form Minimizes

KEYWORDS: minimize, form, parent, sc_minimize, forms.pas AREA: Application Int

How do I minimize the application when I minimize a secondary form?
I want to replicate the behavior that occurs when I minimize the
main form.

  You can use the same logic found in \source\vcl\forms.pas that
TCustomForm (in Delphi 3) uses when the form receives a system
message to minimize.  The form traps WM_SYSCOMMAND messages,
checks to see if the command is to minimize the form, checks
that the form is the MainForm, then performs the application
object's Minimize method.  If the message doesn't specify
SC_MINIMIZE then we call inherited so that default processing
can occur.  Note: failure to include the call to inherited will
probably cause bad things to happen.

.
.
procedure WMSysCommand(var Message: TWMSysCommand);
  message WM_SYSCOMMAND;
.
.
procedure TCustomForm.WMSysCommand(var Message: TWMSysCommand);
begin
  if (Message.CmdType and $FFF0 = SC_MINIMIZE) and
    (Application.MainForm = Self) then
    Application.Minimize
  else
    inherited;
end;


To get this same behavior you can move this code to your form's
unit, and remove the logic that checks that the form is a MainForm.



unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button2: TButton;
  private
    procedure WMSysCommand(var Message: TWMSysCommand);
	message WM_SYSCOMMAND;
  end;

var
  Form1: TForm1;

implementation

uses Unit2;

{$R *.DFM}


procedure TForm1.WMSysCommand(var Message: TWMSysCommand);
begin
 if (Message.CmdType and $FFF0 = SC_MINIMIZE) then
    Application.Minimize
  else
    inherited;
end;

end.

        TI



* #WhiteUnicorn/ StartPage/ Documentation/DelphiFAQ >



- - * - Anastasija aka WhiteUnicorn - * - - LJLiveJournal
PFPhotoFile