Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi OnMouseDown: Nur bei rechtsklick?? (https://www.delphipraxis.net/1021-onmousedown-nur-bei-rechtsklick.html)

Sebastian Nintemann 8. Okt 2002 17:15


OnMouseDown: Nur bei rechtsklick??
 
Hallo!

Also ich hab folgenden Code:

Code:
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  Cursor := crClosedHand; //das was ich eigentlich will
  Caption := 'click'; //nur um zu sehen ob überhaupt was gemacht wird
end;

Was passiert:
Clicke ich mit rechts, so steht 'click' in der Titelleiste und der Cursor ändert sich wie er soll.
Clicke ich aber mit links, steht zwar 'click' in der Titelleiste, der Cursor ändert sich aber nicht.
Das soll einer verstehen.. :shock: :cry:
Woran kann das liegen?

Gruß, Sebastian

OregonGhost 8. Okt 2002 17:28

Wenn ich genau deinen Code verwende, funktioniert es mit rechts wie es soll, mit links wird die Caption sofort gesetzt, und der Mauscursor wird gesetzt, sobald ich die Maustaste wieder loslasse. Vielleicht wird in einer VCL-Anwendung der Cursor nicht aktualisiert, wenn die linke Maustaste gerade gedrückt ist? ;c)

Wenn ich den Cursor mit SetCursor() setze, wird er auch bei einem Linksklick sofort gesetzt, allerdings mit dem Loslassen wieder zurückgesetzt! Spricht wohl dafür, dass die VCL da ihre Finger im Spiel hat, oder? Du kannst das Problem also beheben, indem du mit SetCursor den Cursor setzt UND die Eigenschaft TForm.Cursor setzt.

Luckie 8. Okt 2002 17:38

Genau wie bei mir auch. Wobei hinzukommt, dass er crClosedHand nicht kennt.

d3g 8. Okt 2002 18:26

Hi Grotesquery,

was ich mir vorstellen könnte, ist, dass du nicht auf das Formular, sondern auf eine Komponente (z.B. TPanel) linksklickst und deshalb bei TForm keine Message bekommt und auch nicht OnClick auslöst. Wenn du aber rechtsklickst würde ich sagen, dass die Message entweder von TPanel (o.ä.) oder von der jeweiligen Windows-Klasse an den Parent (TForm) weitergegeben wird. Ich kanns leider nicht ausprobieren (im Moment kein Windows und es mit Kylix auszuprobieren hat wohl keinen Sinn, da CLX und nicht VCL), aber schau mal nach, ob du wirklich auf das Hauptfenster und nicht auf irgendeine Fensterklasse die draufliegt klickst.

MfG,
d3g

Christian Seehase 8. Okt 2002 18:44

Moin d3g,

schade, dass Du es gerade nicht testen kannst, aber das tritt sogar auf, wenn Du nur ein Formular nimmst, und sonst nichts.

Sebastian Nintemann 8. Okt 2002 20:06

Hallo, danke für die Antworten. Es war wirklich nur eine Form ohne irgendwelche Komponenten drauf. Ist jetzt zwar nicht ganz klar geworden wieso es so ist, aber wenigstens wie mans umgehen kann, ist doch schonmal was 8)

Also danke an alle!
Gruß Sebastian

edit: crClosedHand ist übrigens ein funktionierender (das zeigt bei mir das Ergebnis vom Rechtsklick) von mir geladener Cursor.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:56 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz