Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi DBGrid ID on DblClick (https://www.delphipraxis.net/110071-dbgrid-id-dblclick.html)

Tim Henford 12. Mär 2008 15:09

Datenbank: MS SQL 2000 • Zugriff über: ADO

DBGrid ID on DblClick
 
Hallo,
wie bekomme ich bei einem DBGrid heraus, welches Feld onDbClick geklickt wurde?
Delphi-Quellcode:
procedure TForm1.DBGrid1DblClick(Sender: TObject);
begin
    ShowMessage (DBGrid1.SelectedField.AsString);
end;
zeigt mir zwar die ausgewählte erste Spalte, aber ich benötige die ID dieser Spalte.

Danke Tim

s-off 12. Mär 2008 15:26

Re: DBGrid ID on DblClick
 
Hallo,

probier mal TDBGrid.MouseCoord()

Tim Henford 12. Mär 2008 15:30

Re: DBGrid ID on DblClick
 
danke, aber krieg ich damit nicht nur die Mauskoordinaten unter dem Cursor?
Das wird dann ja schwierig auf die ID des Eintrages in der Tabelle zu schließen...

s-off 12. Mär 2008 15:34

Re: DBGrid ID on DblClick
 
Nein, die Mauscoordinaten unter dem Cursor bekommst Du mit ScreenToClient()
Darauf basierend kannst Du dann mit MouseCoords() die Zelle unter dem Cursor ermitteln.

Ich weiß aber ehrlich gesagt nicht, was Du erreichen möchtest.
Da wird es sicherlich auch eine triviale Lösung für geben.

Mit dem von Dir genannten
Delphi-Quellcode:
ShowMessage (DBGrid1.SelectedField.AsString);
bekommst Du doch den Wert des aktuell selektierten Feldes im aktuell selektierten Datensatz.

Oder willst Du den Namen des Feldes? Den bekommst Du mit TDBGrid.SelectedField.FieldName
Und den Index des Feldes mit TDBGrid.SelectedIndex

Tim Henford 12. Mär 2008 15:43

Re: DBGrid ID on DblClick
 
Ja, die Richtung stimmt schon, aber wie schließe ich jetzt auf die ID, die automatische von der DB vergeben wurde?
Meine Tabelle sieht so aus:

Feld1 | ID | Feld2
------------------
test | 3 | test
test | 7 | test
test | 9 | test


und er soll mir die 9 ausgeben onDblClik auf die 3te Zeile.

s-off 12. Mär 2008 15:53

Re: DBGrid ID on DblClick
 
Ah, ok:

Delphi-Quellcode:
ShowMessage(DBGrid1.DataSource.DataSet.FieldByName('ID').AsString);

RavenIV 12. Mär 2008 16:13

Re: DBGrid ID on DblClick
 
Zitat:

Zitat von s-off
Ah, ok:

Delphi-Quellcode:
ShowMessage(DBGrid1.DataSource.DataSet.FieldByName('ID').AsString);

Erklärung dazu:
Wenn Du in einem DBGrid in ein Feld klickst, wird automatisch im Dataset (TQuery, TTable) der zu dem Feld gehörende Datensatz als aktiver Datensatz markiert.
Daher kannst Du per Dataset.FieldByName auf das ID-Feld des Datensatzes zugreifen.
Natürlich muss das ID-Feld beim SELECT der Query mit dabei sein.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:41 Uhr.

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