Autor Beitrag
Kleine
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 04.05.11 08:08 
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.
ausblenden 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 ) ;
//   FormAdresse.Adresse := 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
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Mi 04.05.11 11: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:
ausblenden 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