Thema: Delphi combobox problem

Einzelnen Beitrag anzeigen

nieurig

Registriert seit: 26. Apr 2004
113 Beiträge
 
Delphi 6 Professional
 
#8

Re: combobox problem

  Alt 22. Sep 2004, 07:37
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
Erspare Dir die Gedanken über ungelegte Eier !!!
  Mit Zitat antworten Zitat