seit einigen Stunden versuche ich ein DBGrid mit einem Popup/Kontextmenu auszustatten der bei einem Maus-Rechtsklick erscheinen soll a la:
Code: Alles auswählen
procedure TForm1.DBGrid1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
col, row: integer;
begin
if ssRight in Shift then
begin
DBGrid1.MouseToCell(X, Y, col, row);
// Hier soll mal ein Kontext/Popup Menu rein
// Lese den Primary Key Value aus der ersten Spalte der angeklickten Zeile und starte ein Update
// Schreiben/Lesen eines BLOB via INSERT...
ShowMessage('Rechtsklick: row: ' + IntToStr(row) + ', col:' + IntToStr(col));
end;
end;
Die row und col Werte sind leider nur die Zeilen/Spalten aus dem sichtbaren Bereich des DBGrid. Also nicht wirklich verwendbar, wenn die vorhanden Zeilen den Bildschirmbereich deutlich überschreiten (ist leider die Regel). Ich habe im Internet schon viel diesbzgl. recherchiert aber kann nicht glauben, dass die Lösung so kompliziert ist (u.A. ableiten eines CustomDB/StringGrid etc.). Ist das wirklich so eine "Rocketscience" den Wert einer bestimmten Zelle in einer angeklickten Zeile zu ermitteln?
Gibt es da beim DBGrid evtl. mittlerweile eine elegant(er)e Lösung?
Ich bin gespannt auf eure Vorschläge und bedanke mich bereits im Voraus für das Interesse an diesem Thema.
Gruß
Helios