OnMouseUp Message wird blockiert

ColdFireIce

Grünschnabel
Tach,

folgendes problem:

- TForm erstellt
- TPanel drauf erstellt
- OnMouseDown vom Panel erreignis procedure gefüllt mit:

Code:
  ReleaseCapture;
  Perform(WM_SYSCOMMAND, $F012, 0);

- OnMouseUp vom Panel erreignis procedure gefüllt mit:

Code:
  Showmessage('Geht das OnMouseUp ?');

Danke im voraus
 

ColdFireIce

Grünschnabel
Sobald releasecapture und perform im mousedown erreignis ausgeführt werden, wird das OnMouseUp event gesperrt.

Es wäre schon nicht schlecht wenn ich das trotzdem irgendwie abfragen kann.

Sag aba jetzt nich ich soll die Message verwenden, da OnMouseUp auch nur eine Kapselung der Message ist.
 

Peter Bönnen

Erfahrenes Mitglied
Original geschrieben von ColdFireIce
Sag aba jetzt nich ich soll die Message verwenden, da OnMouseUp auch nur eine Kapselung der Message ist.
Dein Perform(WM_SYSCOMMAND, $F012, 0); führt, wie dir sicher klar ist, ein "Verschieben" des Formulars aus. Ein "Verschieben" umfasst allerdings die Mausoperationen "Down", "Move" und auch "Up". Dadurch wird dein MouseUp nicht mehr vom Panel behandelt, sondern ist bereits durch den Abschluss des Perform vom Formular behandelt worden.

Dir wird also nichts anderes übrig bleiben, als ein gesondertes WM_LBUTTONUP an dein Panel zu senden:
Code:
TWinControl(Sender).Perform(WM_LBUTTONUP, 0, Y * $FFFF + X);
Fluke