![]() |
ComboBox auswählen + Daten anzeigen
Hi und zwar wurde mir hier schonmal geholfen, und meine frage wurde beantwortet und zwar besser ls ich gehoft hatte.
Deswegen wollte ich jetzt nochmal was fragen und hoffe, das ihr mir wiedr helfen könnt. Ich habe nun mir ein programm geschrieben, wo man jezt Name Nachname Alter Ort eingeben kann, in ein Editfeld. So wenn man da was eingegeben hat und auf den Button "Save" klickt, dann werden diese Strings in eine .ini gespeichert. So nun ich die aber wieder laden. Das wäre an für sich kein Problem, nur ich habe das so gemacht, dass man as jetzt von vershciedenen Leuten eintragen kann. So deswegen will ich jetzt, die ganzen Sachen in einer Comobox anzeigen lassen, allerdings nur den Nachnamen. Das habe ich ich auch gemacht, indem ich die Combobox einfach die .ini laden lasse und die Combobox mir die Eigenschaft1 aus der Sektion1 anzeigen lassen soll. Das geht auch. Nur wenn ich jetzt den geünschten Namen auswähle in der Combobox auswähle soll er mir die restlichen Daten in Editfeldern ausgeben. Nur wie mache ich das jetzt? Also was muss ich machen, damit ich, wenn ich mir was ausgesucht hab aus der Combobx auch was damit machen kann? Im momment kann ich sie ja nur Anklicken und auswählen, aber sie gibt mir ja jetzt nichts aus. Kleines Beispiel: Ich habe jetzt in der Combobox "Hallo" drinn stehen. Was muss ich jetzt machen, bzw wie sieht der code aus, das sobald ich "Hallo" auswähle, er mir sofort in einem dafür vorgesehenen Editfeld "Welt" ausgibt? Wenn ich das hab, kann ich mir den rest bestimmt selber zusammen bauen. Oder ich frag einfach nochmal^^ Vielen dank schonmal |
Re: ComboBox auswählen + Daten anzeigen
Hi!
Was du suchst ist wohl das OnChange-Event! Ciao, Frederic |
Re: ComboBox auswählen + Daten anzeigen
Hmmm, daran hab ich auch gedacht, trotzdem weiß ich nicht wie ich das jetzt genau anwende.
Hier mal der Code von meiner Combobox:
Delphi-Quellcode:
rocedure TForm1.ComboBox1Change(Sender: TObject);
var cbname : string; begin try ini := TIniFile.Create('c:\Names.ini'); cbname := ini.ReadString('Sektion1', 'Eigenschaft3', ''); ComboBox1.Items.Add(cbname); finally ini.Free end; Hiermit lade ich ja die .ini Dtei mit den Namen drinne: ini := TIniFile.Create('c:\Names.ini'); Hiermit sage ich ihm, das er die Datei, die auf der Eigenschaft1 liegt laden soll und speicher sie auf "cbname": cbname := ini.ReadString('Sektion1', 'Eigenschaft3', ''); Und hier sag ich ja, das er mir das, was auf "cbname" liegt in der Combobox anzeigen soll. Jetzt weiß ich nicht, wie ich da Onchange anwenden soll? |
Re: ComboBox auswählen + Daten anzeigen
Hallo,
du könntest eine Ini-Datei aufbauen, die etwa so ausschaut: Zitat:
Delphi-Quellcode:
So könntest z. B. die Section "Huber" auslesen, wenn in der ComboBox "Huber" ausgewählt wurde.
uses
..., Inifiles; var S: String; StringList_Name: TStringList; IniFile: TIniFile; Alter: String; Ort: String; begin //Inifile erzeugen IniFile := TIniFile.Create('c:\namen.ini'); //StringList erzeugen StringList_Name := TStringList.Create; try //Nachname aus ComboBox auslesen S := ComboBox1.Items.Strings[ComboBox1.ItemIndex]; //es ginge auch //S := ComboBox1.Text; //Section auslesen IniFile.ReadSectionValues(S, StringList_Name); //StringList prüfen If StringList_Name.Count > 0 then begin //Section-Werte auslesen Alter := StringList.Values['Alter']; Ort := StringList.Values['Ort']; end; finally FreeAndNil(StringList_Name); FreeAndNil(IniFile); end; end; Die in der Ini-Datei hinterlegten Werte für Alter und Ort würden dann in den Variablen "Alter" bzw. "Ort" stehen. (Der Code müsste funktionieren, wenn ich mich jetzt nicht vertippt habe) [Edit] StringGrid-Prüfung eingebaut |
Re: ComboBox auswählen + Daten anzeigen
Hi!
Nein, mein Gedanke war ein anderer. Du solltest ja bereits vorher die Einträge in der ComboBox stehen haben (z.B. im FormCreate geladen) und ComboBoxChange wird genau dann aufgerufen, wenn jemand einen Eintrag aus dieser ComboBox auswählt. Das wäre der richtige Moment um dann ausgehend von dem gewählten Eintrag dann die anderen Daten wie ALter und Ort "nachzuladen"... Ich hoffe, es ist nun etwas klarer, was ich meinte. Ciao, Frederic |
Re: ComboBox auswählen + Daten anzeigen
Kann ich denn irgentwie auf die namen in der Combobox zugreifen?
Sprich wie in ner TStringList? Also z.b. Combobox.Value (name); Und dann per schleife. Also wenn z.b. if Combobox.Value (name) = cbname then schreib die daten aus der .ini in die Editfelder. Ich gehe mal davon aus das der Code "Combobox.Value (name)" natürlich total falsch ist. Aber das ist ja die frage, wie der Code lauten muss. |
Re: ComboBox auswählen + Daten anzeigen
Wenn du meinen Code oben liest, dann siehst du wie man aus einer comboBox den Text (Namen) des ausgewählten Items ausliest
und wie man in der Ini-Datei danach sucht |
Re: ComboBox auswählen + Daten anzeigen
Gut dann hab ich noch ein paar fragen zu deinem code:
z.b. das hier:
Delphi-Quellcode:
Woher weiß er jetzt, welche Datei ich auswählen will.
try
//Nachname aus ComboBox auslesen S := ComboBox1.Items.Strings[ComboBox1.ItemIndex]; Da steht ja nur ItemIndex und nicht was genaues. Das könnte ja doch jeder text in der Combobox sein. Und die Sectionen auslesen sind auch gnaz anders als ich es kenne. Dein Code:
Delphi-Quellcode:
IniFile.ReadSectionValues(S, StringList_Name);
Und mein code:
Delphi-Quellcode:
ini := TIniFile.Create('c:\MeineIni.ini');
// INI-Datei und initialisieren try var1 := ini.ReadString('Sektion1', 'Eigenschaft1', ''); Und das hier verstehe ich auch nicht:
Delphi-Quellcode:
//Section-Werte auslesen
Alter := StringList.Values['Alter']; Ort := StringList.Values['Ort']; Da ist meine Methode doch viel besser oder nicht? Hier der inhalt meiner .ini: [Sektion1] Eigenschaft1=test1 Eigenschaft2=beispiel1 Eigenschaft3=bla1 Eigenschaft4=http://www.bla1.de [Sektion2] Eigenschaft1=test2 Eigenschaft2=beispiel2 Eigenschaft3=bla2 Eigenschaft4=http://www.bla2.de Wenn ich jetzt was aufrufn möchte, mach ich das einfach mit dem Code, den ich oben genannt habe. Aber danke schonmal |
Re: ComboBox auswählen + Daten anzeigen
Zitat:
Zitat:
Zitat:
|
Re: ComboBox auswählen + Daten anzeigen
Ok und wofür macht er noch die überprüfung
If StringList_Name.Count > 0 then ? Wenn er die StringList doch gerade erst erstellt, muss sie doch leer sein, oder warum macht er das? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:29 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz