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!