Delete - Mi 04.05.11 09:08
Titel: Verknüpfung Datensatz einer Datenbank mit Listbox
Hallo :)
ich bin neu hier und zudem ein Anfänger in Delphi..
Folgendes Problem:
Ich sollte ein Adressbuch mit Delphi2009 programmieren.
Es funktioniert eigetnlich fast alles. Man kann Datensätze neu einfügen oder ändern und diese werden in einer Datenbank gespeichert.
Im Hauptformular werden die Datensätze in einem Grid ausgegeben.
Nun soll aber, wenn ich ein Datensätz auswähle, in der daneben stehenden Listbox die Telefonnummer und fax und sowas zu speziel diesem Datensatz ausgegeben werden.
Ich hatte zu Anfang beides in einer Listbox stehen, wo das auch funktioniert hat.
Nur wurde die eine jetzt durch das grid ersetzt.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| procedure TFormMain.AdresseListBoxClick(Sender: TObject); var Adresse : tAdresse ; begin Adresse := tAdresse( AdresseListBox.Items.Objects[ Adresselistbox.ItemIndex ] ) ; RefreshKontaktListe( adresse ) ; end; |
so sah das zu anfang aus.
jetzt müsste Adresse := tAdresse( AdresseListBox.Items.Objects[ Adresselistbox.ItemIndex ] ) ;
ja geändert werden, damit er den ausgewählten datensatz aus dem grid nimmt.
Nur leider hab ich keine ahnung wie ich das machen soll.
Wäre echt nett, wenn mir jemand helfen könnte :)
Lg Kleine
Klabautermann - Mi 04.05.11 12:37
Hallo,
ich nehme mal an, das Grid ist ein DBGrid, welches über eine DataSource an eine Tabelle oder ein Query angebunden ist.
In dem Fall kannst du Wahrscheinlich am Einfachsten im
AfterScroll Ereignis deine Listbox füllen.
Zum Beispiel so:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| procedure TForm1.Table1AfterScroll(DataSet: TDataSet); begin ListBox1.Items.BeginUpdate; try ListBox1.Clear; if not DataSet.FieldByName('Tel').IsNull then ListBox1.Items.Add('Telefon: ' + DataSet.FieldByName('Tel').AsString); if not DataSet.FieldByName('Fax').IsNull then ListBox1.Items.Add('Fax: ' + DataSet.FieldByName('Fax').AsString); if not DataSet.FieldByName('Mail').IsNull then ListBox1.Items.Add('E-Mail: ' + DataSet.FieldByName('Mail').AsString); finally ListBox1.Items.EndUpdate; end; end; |
Das setzt natürlich voraus, das die Daten auch im Datensatz vorhanden sind.
Gruß
Klabautermann