Thema: Delphi combobox problem

Einzelnen Beitrag anzeigen

Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#7

Re: combobox problem

  Alt 22. Sep 2004, 06:55
Zitat von eddy23:
... nur mit der combobox halt ned, die aber gleich auch meine datensätze steuern soll
Hai eddy23,

ich glaube hier liegt ein kleines "Verständnissproblem" vor
Mit einer DBCombobox kannst Du nicht in einer Tabelle navigieren! Mit dieser kannst Du dem Datenfeld das Du in DataField angegeben hast einen Wert zuweisen der entweder in die Combobox eingetippt wird oder ein Wert der aus der Eigenschaft Items ausgewählt wird.

Wenn Du mit einer "Combobox" in deiner Tabelle navigieren möchtest kannst Du dafür eine DBLookupCombobox missbrauchen.
Zuerst aber mal die "offizielle" Verwendung der DbLCb.
Diese ist dafür da um im Feld DataField der Tabelle DataSource den Wert aus dem Feld KeyField der Tabelle ListSource zuweisen zu können. Angezeigt wird in der DbLCb das Feld ListField aus der Tabelle ListSource.

Uff... schöner Satz oder?

Ein klassiches Beispiel dafür ist zum Beispiel das Speichern von Anreden in einer Adress-Tabelle:
Code:
Adress-Tabelle
adress_id : Integer
anrede_id : Integer
name     : String
vorname  : String
Code:
Anreden-Tabelle
anrede_id : Integer
anrede   : String
Die Eigenschaften der DBLookupComboBox wären jetzt so:
Code:
DataSource : Adress-Tabelle
DataField : anreden_id
ListSource : Anreden-Tabelle
KeyField  : anreden_id
ListField : anrede
So könnte man mit Hilfe der DbLCb die Anrede ändern.

Aber das alles möchtest Du ja überhaupt nicht
Du möchtest nur mit Hilfe einer ComboBox in eine Tabelle navigieren. Ganz einfach. Lasse DataSource und DataField unbenutzt.
Möchtest Du zum Beispiel durch die Adress-Tabelle navigieren setze die Eigenschaften so:
Code:
DataSource :
DataField :
ListSource : Adress-Tabelle
KeyField  : adress_id
ListField : name
Einen kleinen Fehler hat das ganze aber! Wenn Du auf andere Weise durch deine Tabelle navigierts (DBGrid, .Next, .First usw) bekommt die DbLCb das nicht mit. In diesem Fall müsstest Du dich von Hand darum kümmern das die Anzeige dort stimmt.

So, ich hoffe das hilft Dir etwas weiter.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat