Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Spalte in DBGrid abfragen


ibh_compucat - So 07.02.10 13:22
Titel: Spalte in DBGrid abfragen
Hallo gemeinsam,

wie kann man die aktuelle Spalte in einem DBGrid abfragen (das natürlich mit einer Table verbunden ist).
Geht das mit DBGrid1.columns.xxx? Wäre schön, wenn ein FeldIndex oder der Feldname zurückgeliefert würde.
Danke für eine Antwort.

Gruß ibh_compucat


Xion - So 07.02.10 13:29

Wenn du mit "aktuelle Spalte" die selektierte Spalte meinst:

Delphi Hilfe hat folgendes geschrieben:
TCustomGrid.Selection Eigenschaft

Gibt die Größe der aktuellen Auswahl an.

Klasse
TCustomGrid

Syntax



Delphi-Quelltext
1:
 protected property Selection: TGridRect read GetSelection write SetSelection;                    



Beschreibung
Mit Selection können Sie einen Zellbereich auswählen. Selection enthält entweder für erste Spalte, die erste Zeile, die letzte Spalte und die letzte Zeile im Gitter oder die Zeilen- und Spaltenkoordinaten der linken oberen und der rechten unteren Zelle des ausgewählten Bereichs.

Selection kann nur mehrere Zellen repräsentieren, wenn Options den Wert goRangeSelect enthält.


und dann kannst du ja einfach den Tabellenkopf auslesen z.B.


ibh_compucat - So 07.02.10 13:46

Danke für Deine Antwort Xion, aber ich versteh' das noch nicht ganz:

ich habe z.B. 3 Spalten (Datenfelder in der Tabelle), Spalte A (Index = 0), Spalte B (Index = 1) und Spalte C (Index = 2).
Wenn ich zur Dateneingabe nun im Grid bin, dann möchte ich - abhängig von der selektierten Spalte - bei Betätigung der Entertaste unterschiedlich reagieren.
Wenn ich z.B. eine Integervariable 'Feldindex habe, wie müsste dann die Abfrage aussehen?

Feldindex := Form1.DBGrid1.???????????

Gruß ibh_compucat


Xion - So 07.02.10 13:54

Eben nochmal guckt, das DBGird hat garkeine Selection-Property, das ist das normale StringGrid :oops:


Delphi-Quelltext
1:
2:
3:
4:
5:
try
  FeldIndex:= strtoint( DBGrid1.SelectedField.Text );
except
  ShowMessage(  "Fehler: "+DBGrid1.SelectedField.Text +" ist keine Zahl!" );
end;


Meinst du so?

Ich hab das DBGrid immer durch ein normales Grid ersetzt, weil das DBGrid halt wirklich direkt in die Datenbank schreibt, das ist ziemlich unschön manchmal.


ibh_compucat - So 07.02.10 13:56

Vielen Dank, Super!

Gruß ibh_compucat