![]() |
MouseUp Shift bleibt leer
Guten Morgen,
ich möchte, dass eine MouseUp Procedure nur bei einem Doppelklick ausgeführt wird. Ich habe gelesen, dass ich dann shift auslesen kann, in dem dann "ssDouble" stehen müsste. Leider funktioniert das bei mir nicht, da Shift immer leer bleibt?
Delphi-Quellcode:
Kann mir jemand sagen, was cih falsch mache?
if ssDouble in Shift then begin
Vielen Dank Patrick |
AW: MouseUp Shift bleibt leer
Gibt es einen bestimmten Grund, dass Du nicht gleich das OnDblClick-Event verwendest?
|
AW: MouseUp Shift bleibt leer
Ja, den gibt es, aber vielleicht hast Du ja eine elegantere Lösung für mich.
Ich habe in dem StringGrid die Option RowSelect eingestellt, damit immer die ganze Zeile markiert wird. Andererseits möchte ich aber verschiedene Aktionen ausführen, je nach Spalte, auf die der User klickt( normalerweise wird ein Fenster geöffnet, aber wenn auf die Spalte Bemerkung geklickt wird, dann soll sich ein anderes Fenster öffnen...) Wenn ich die Option RowSelect aktiviert habe, dann ist ACol immer 0 und ich habe somit keine Möglichkeit mehr, dass ich die Spalte abfragen kann, oder? Vielen Dank Patrick |
AW: MouseUp Shift bleibt leer
Kommt TStringGrid.MouseToCell nicht in Frage?
|
AW: MouseUp Shift bleibt leer
Genau das verwende ich im MouseUp Event. Ich kann den Code gerade mal wieder nicht posten, da der Entwicklungsrechner keinen Internetanschluss hat...
Ich habe aber nicht herausgefunden, wie ich MouseToCell in dem Doppelklick Event ausführe. Ich weiß, dass ich das mal gesehen habe. Aber mir fehlen die X,Y Koordinaten aus dem MouseUp Event... Hast Du da einen Tip für mich? Vielen Dank Patrick |
AW: MouseUp Shift bleibt leer
Wenn ich es noch recht in Erinnerung habe verlangt MouseToCell nach Bildschirmkoordinaten. Die sind ganz einfach mit Mouse.CursorPos zu ermitteln.
|
AW: MouseUp Shift bleibt leer
PRIMA!!! Genau das war der Tip, den ich brauchte...
In dem Event DBLCLICK einfach folgendes reinpacken:
Delphi-Quellcode:
StringGrid1.MouseToCell(Mouse.CursorPos.X, Mouse.CursorPos.Y, Col, Row)
Dann ist Col die Splate und Row die Zeile und das Ganze klappt auch bei RowSelect. Vielen Dank für die schnelle Hilfe! Patrick |
AW: MouseUp Shift bleibt leer
Hallo,
ich habe leider doch noch ein Problem: In einem anderen StringGrid bekomme ich das jetzt aus irgendeinem Grund nicht hin.
Delphi-Quellcode:
Col bekommt immer den Wert -1.
procedure TMain.GridOwnRFQnachfassenDblClick(Sender: TObject);
var Col, Row: integer; Objekt: TPageChange; begin GridOwnRFQNachfassen.MouseToCell(Mouse.CursorPos.X,Mouse.CursorPos.Y,Col,Row); if Col<9 then begin end; Ich habe mal nachgesehen, und die Werte von Mouse.CursorPos.X und Mouse.CursorPos.Y liegen innerhalb von Grid.top-Grid.Height und Grid.Left und Grid.Width. Hat jemand eine Idee, warum das jetzt hier nicht klappt. Bei dem anderen Grid läuft es wunderbar... Vielen Dank Patrick |
AW: MouseUp Shift bleibt leer
Die Mousekoordinaten beziehen sich auf den ganzen Bildschirm, Du musst mit ScreenToClient umrechnen ...
Delphi-Quellcode:
procedure TForm3.StringGrid1DblClick(Sender: TObject);
var Col, Row: integer; p:TPoint; begin p := TControl(Sender).ScreenToClient(Point(Mouse.CursorPos.X,Mouse.CursorPos.Y)); StringGrid1.MouseToCell(p.X,p.Y,Col,Row); if Col<9 then begin end; end; |
AW: MouseUp Shift bleibt leer
Guten Morgen.
Vielen Dank! So funktioniert es jetzt - aber so richtig verstanden habe ich das nicht... Gruß Patrick |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:31 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