Entwickler-Ecke

Windows API - Maximieren abfangen


MH1987 - So 13.05.07 21:33
Titel: Maximieren abfangen
Hi,

ich würde gerne das Ereignis, wenn jemand bei dem Formular auf das Maximieren Symbol drückt, mit einer eigenen Prozedur bestimmen.

Kann mir jemand sagen wie das geht?

Gruß,
MH1987


Moderiert von user profile iconChristian S.: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Mo 14.05.2007 um 10:06


alias5000 - So 13.05.07 22:04

Wenn ich das diesem Artikel [http://www.codeguru.com/forum/archive/index.php/t-234554.html] richtig entnehme, musst du die WM_SYSCOMMAND abfangen und der wparam muss auf sc_maxmize sein. Irgendwie sowas habe ich auch noch ganz dunkel in Erinnerung..

Gruß
alias5000


Blackheart666 - So 13.05.07 22:11


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
public
    { Public-Deklarationen }
    procedure WMSysCommand(var Msg: TWMSysCommand); message WM_SYSCOMMAND;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.WMSysCommand;
begin
  if (Msg.CmdType = SC_MAXIMIZE) then ShowMessage('Maximiert');
  DefaultHandler(Msg);
end;


MH1987 - Mo 14.05.07 00:52

Super, also mit dem Knopf zum Maximieren klappts schon mal.
Jedoch kann man noch mit dem doppelklick auf die Leiste oben maximieren, welches nicht abgefangen wird!

Gibt es dann da auch ein Command für?

Gruß,
MH1987


Lannes - Mo 14.05.07 13:02

Hallo,

such mal nach WM_NCLBUTTONDBLCLK, das hilft.


MH1987 - Mo 14.05.07 13:42

hmm,

ich habs jetzt so versucht aber das klappt nicht:


Delphi-Quelltext
1:
2:
3:
4:
Case Msg.CmdType of
  SC_MAXIMIZE: ...
  WM_NCLBUTTONDBLCLK: ...
end;


Hab ich die Abfrage falsch? Ich benutze das erste Mal eine Message.

Gruß,
MH1987


ZeitGeist87 - Mo 14.05.07 13:46

Gibts nicht in irgend ner Palette sowas wie nen ActionListener, den man auf die Form droppt und der gewisse Ereignisse abfangen kann??

Lg
Stefan


MH1987 - Mo 14.05.07 14:05

hmm,

wüsst ich nicht


Marco D. - Mo 14.05.07 14:21

Es gibt die Komponente TApplicationEvents. Diese auf die Form ziehen und das Ereignis OnMaximize verwenden.


Lannes - Mo 14.05.07 14:22

Hallo,

oder so:
http://www.delphipraxis.net/topic28014_doppelklick+auf+titelleiste+erkennen.html&highlight=wmnclbuttondblclk