Einzelnen Beitrag anzeigen

Rayne

Registriert seit: 27. Nov 2005
7 Beiträge
 
#1

Per Klick auf Listboxeintrag bestimmten Datensatz auslesen?

  Alt 20. Dez 2005, 20:18
Hallo!

In meinem kleinen Programm kann man in verschiedene Edit-Felder Dinge eintragen, die dann in einer Datei gespeichert werden.

Jetzt habe ich eine Suche, die es mir ermöglicht, mit Suchbegriffen den jeweiligen passenden Datensatz aus der Datei rauszusuchen und alle dazugehörigen Werte wieder in die Edit-Felder einträgt.

Da es ja vorkommen kann, dass in bestimmten Datensätzen einzelne Bezeichnungen doppelt vorkommen (bspw. Vorname, Artikelname etc.), habe ich mir eine ListBox erstellt, wo alle Datensätze angezeigt werden, wenn es mal einen doppelten Eintrag geben sollte.
Ein Beispiel: Es gibt 2 Datensätze, wo die Person jeweils Klaus heißt. Jetzt suche ich nach Klaus und in meiner ListBox erscheint 2 mal der Eintrag Klaus.

Jetzt kommt mein Problem: Ich möchte, dass wenn ich nun auf solch einen Eintrag in der ListBox klicke, die dazugehörigen weiteren Eigenschaften dieses Datensatzes in den Edit-Feldern eingetragen werden.
Ein Beispiel: Klaus 1 wohnt in Berlin, ist 38 Jahre alt und verheiratet. Klaus 2 wohnt in München, ist 22 Jahre alt und Single.
In meiner ListBox stehen nun 2 Einträge „Klaus“ (das geht bis jetzt alles schon).
Klicke ich auf den ersten Eintrag, sollen in den Edit-Feldern alle Eigenschaften von Klaus 1 eingefügt werden. Klicke ich auf Klaus 2, sollen alle Eigenschaften von ihm dort eingetragen werden.

Der Quellcode für die Suche lautet:

Delphi-Quellcode:
procedure TForm1.Suchen1Click(Sender: TObject); //Suche
var q,index : integer; suchstring: string[30];
begin

 
index:=-1;
suchstring:=Edit15.Text;
Listbox1.Clear;

 
If Edit15.Text='Then
begin
ShowMessage('Bitte einen Suchbegriff eingeben!');
end

 
Else
begin

 
If RadioButton1.checked=True Then
begin

 
  for q:=0 to 100 do //sucht nach Gurtzeugen
    begin
      if (saetze[q].gurtzeug = suchstring) then
      begin
      index:=q;
      Listbox1.Items.Add(IntToStr(index+1)+'. '+saetze[q].gurtzeug); //zeigt alle Suchergebnisse in Listbox an, die den Suchkriterien entsprechen
    end;
    end;
  if index > -1 then
    begin
     edit1.text:=saetze[index].gurtzeug;
     edit2.text:=IntToStr(saetze[index].baujahr1);
     edit3.text:=IntToStr(saetze[index].spruenge1);

 
     edit4.text:=saetze[index].hauptschirm;
     edit5.text:=IntToStr(saetze[index].baujahr2);
     edit6.text:=IntToStr(saetze[index].spruenge2);

 
     edit7.text:=saetze[index].reserve;
     edit8.text:=IntToStr(saetze[index].baujahr3);
     edit9.text:=IntToStr(saetze[index].spruenge3);

 
     edit10.text:=saetze[index].aad;
     edit11.text:=IntToStr(saetze[index].baujahr4);
     edit12.text:=IntToStr(saetze[index].spruenge4);

 
     Edit13.Text:=IntToStr(saetze[index].preis);

 
     Edit14.Text:=IntToStr(saetze[index].index);

 
    end

 
    Else
    begin
    ShowMessage('Leider keine Treffer gefunden!');
    end;

 
    end;

Ich weiß nun allerdings nicht, wie das mit der ListBox genau geht, dass mir per Klick die richtigen Daten ausgelesen werden.

Also ich denke mir, dass ich ungefähr so was eintragen muss:

Delphi-Quellcode:
procedure TForm1.ListBox1Click(Sender: TObject);
begin

 
     edit1.text:=saetze[r].gurtzeug;
     edit2.text:=IntToStr(saetze[r].baujahr1);
     edit3.text:=IntToStr(saetze[r].spruenge1);

 
     edit4.text:=saetze[r].hauptschirm;
     edit5.text:=IntToStr(saetze[r].baujahr2);
     edit6.text:=IntToStr(saetze[r].spruenge2);

 
     edit7.text:=saetze[r].reserve;
     edit8.text:=IntToStr(saetze[r].baujahr3);
     edit9.text:=IntToStr(saetze[r].spruenge3);

 
     edit10.text:=saetze[r].aad;
     edit11.text:=IntToStr(saetze[r].baujahr4);
     edit12.text:=IntToStr(saetze[r].spruenge4);

 
     Edit13.Text:=IntToStr(saetze[r].preis);

 
     Edit14.Text:=IntToStr(saetze[r].index);

 
end;
Wenn ich das jedoch so mache, zeigt der mir immer nur den ersten Eintrag im Datensatz an.
Der soll aber „erkennen“, welchen Datensatz ich gerade in der ListBox anklicke und soll genau dessen Eigenschaften in die Edit-Felder eintragen

Irgendwie kann das doch gar nicht so schwer sein, aber ich komm an dieser Stelle echt nicht mehr weiter

Ich hoffe, ihr könnt mir den entscheidenden Tipp geben

Danke!
  Mit Zitat antworten Zitat