Hallo,
ich "mißbrauche" die ComboBox (NICHT DBCombo...) auch oft zum Navigieren in der Datenmenge. Wie Sharky schon gesagt hat, ist hierbei allerdings Handarbeit erforderlich.
z.B. so:
Eine kleine Datenstruktur zur Speicherung der ID in meiner Tabelle
(Jede Tabelle bekommt bei mir eine LongInteger ID als Primary Key)
Delphi-Quellcode:
type aTag = class(TObject)
ID : Integer;
end;
Dann eine Funktion mit der die Daten einer
SQL-Abfrage
(z.B. Select Vorname + ' ' + Nachname as AnzeigeText, IDAdresse as AnzWert from Adressen Order by Nachname ASC )
in der ComboBox dargestellt werden:
Delphi-Quellcode:
procedure TDBTools.readDBDaten( SQLAbfrage :
String; Combo:TComboBox );
var tmpTag : aTag; tmpStr:
String;
begin
with DBModul.SQLAbfrage
do begin
Close;
SQL.Clear;
SQL.Add( SQLAbfrage );
CursorType := ctOpenForwardOnly;
Open;
while not EOF
do begin
tmpStr := FieldbyName('
AnzText').asString;
tmpTag := aTag.Create();
tmpTag.ID := FieldbyName('
AnzWert').asInteger;
Combo.Items.AddObject( tmpStr,tmpTag);
next();
end;
Close;
CursorType := ctKeySet;
end;
end;
Im Programm steht dann im OnChange Event der ComboBox etwa folgendes:
Delphi-Quellcode:
einTag := aTag( meineComboBox.Items.Objects[ meineComboBox.ItemIndex ] );
tmpIDAdresse := einTag.ID;
dann Selektion des Datensatzes via
SQL-Statement
"Select * from Adressen where IDAdresse =" + tmpIDAdresse
oder falls die Daten sowieso schon in einer Tabelle verfügbar sind
Delphi-Quellcode:
if ADOTable1.Locate('IDAdresse',tmpIDAdresse) then begin
// usw.
end;
Ich hoffe es hilft.
Niels