Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Form nach Verschieben reagiert nicht


SixpointedStarsoft - Do 07.07.11 22:40
Titel: Form nach Verschieben reagiert nicht
Hallo zusammen

Ich habe ein Problem damit, dass nach folgendem Aufruf, mit dem ich meine Form verschiebe:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
 WM_LBUTTONDOWN: begin
      case FWMHitResult of
        HTCAPTION: begin
         // ReleaseCapture(TForm(FSkinedForm).Handle);
          TForm(FSkinedForm).Perform(WM_SYSCOMMAND,SC_MOVE or 1,0);
        end;
      end;

    end;


ich zuerst wieder auf die Form klicken muss, um die Form wieder auf Mausereignisse anprechbar zu machen. Oder anders ausgedrückt wenn ich dann auf ein Butten klicke spricht es nicht an, erst beim zweiten Mal.
Weiss jemand was da passiert und wie ich das verändern kann?
Habe mit SetFocus, ReleaseCapture probiert, geht aber nicht.
Mit lieben Grüssen


Moderiert von user profile iconNarses: Topic aus Multimedia / Grafik verschoben am Fr 08.07.2011 um 01:16


Delete - Fr 08.07.11 00:58


Delphi-Quelltext
1:
2:
3:
4:
WM_LBUTTONDOWN:
      begin
        MoveWindowWithMouse(Dlg, lParam);
      end;



Delphi-Quelltext
1:
2:
3:
4:
5:
procedure MoveWindowWithMouse(Handle: THandle; lParam: LPARAM);
begin
  SetCursor(LoadCursor(0, IDC_SIZEALL));
  SendMessage(Handle, WM_NCLBUTTONDOWN, HTCAPTION, lParam);
end;


So funktioniert es bei einem NonVCL Dialog.


SixpointedStarsoft - Fr 08.07.11 14:55

Hallo Michael
Danke für diese Variante. Leider gibt es das gleiche Phänomen. Verschieben geht gut, sobald ich den Mausbutton loslasse und anschliessend etwas auf der Form anklicken will geschieht nichts, erst beim zweiten Klick reagiert das Fenster wieder normal.


SixpointedStarsoft - Fr 08.07.11 15:15

Hallo Michael

Habe den Fehler gefunden.
Nach dem Bearbeiten, besser gesagt nach dem reagiern auf WM_LBUTTENDOWN, darf ich nicht die alte Windowprocedure aufrufen. Dann funktionierts super.

Danke aber für Deine Variante, die mir neue Dinge ermöglicht.

Liebe Grüsse

Christoph