Einzelnen Beitrag anzeigen

jumper63

Registriert seit: 25. Aug 2019
Ort: Berlin
8 Beiträge
 
Delphi 10.3 Rio
 
#1

Wie erfahre ich, auf welche Zeile im Stringgrid geklickt wurde?

  Alt 28. Okt 2021, 22:10
SORRY!
War lang nicht dabei, hab bisher irgendwo alles finden können, was ich brauchte.
Aber, seit WOCHEN suche ich und finde nicht!

In Stringgrid.MousDown erfahre ich die Maus-Koordinaten, aber ich benötige
die Angabe Col,Row, um die Werte der jeweiligen Zeile auszulesen.

Habe dies hier gefunden, aber beim Klick auf eine Zeile/Zelle zeigt mir die ListBox
völlig falsche Werte an!
BIN ABSOLUT DANKBAR für EURE HILFE!!!

Folgender Befehl bezieht sich doch auf die gesamte Form, oder?
p:=ScreenToClient(Point(x, y));

Delphi-Quellcode:
procedure TForm1.StringGrid1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var p: TPoint;
Col,Row: Integer;
begin
with StringGrid1 do//
     begin //
     L:=Left; //
     T:=Top; //
p:= ScreenToClient(Point(x, y));
//StringGrid1.MouseToCell(p.x, p.y, Col, Row); // Alt HOHE FEHLER Quote
StringGrid1.MouseToCell(p.x+L, p.y+T, Col, Row);// Neu geringe FEHLER Quote
ListBox1.Items.Add('Col,Row='+IntToStr(Col)+','+IntToStr(Row));
PopUpMenu1.PopUp(Mouse.CursorPos.X, Mouse.CursorPos.Y);// Das klappt
end;
Col,Row Werte stimmen NICHT mit geklickter Zeile/Zelle überein!

Nachtrag, hab die x,y Werte von ScreenToClient etwas verändert,
so wird Col,Row (fast)richtig angezeigt-
StringGrid1ToClient nimmt Delhi nicht
Uli

Geändert von jumper63 (28. Okt 2021 um 22:36 Uhr)
  Mit Zitat antworten Zitat