![]() |
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? |
Re: ComboBox auswählen + Daten anzeigen
Es wurden vorher doch alle Wertepaare der angegeben Sektion in diese geladen. Ist Count ß bdeutet es das die Sektion leer war
|
Re: ComboBox auswählen + Daten anzeigen
Hä, sry aber das versteh ich nicht. Was bringt en das, wenn die 0 war. Dasergibt für mich keinen sinn.
Oder soll es heißen, das er das nur rein schreiben soll, wenn die Sektion leer ist? |
Re: ComboBox auswählen + Daten anzeigen
Nein, bei leerer SeKtion brauchst man ja nichst auswerten
|
Re: ComboBox auswählen + Daten anzeigen
Hmm ok, soweit habe ich es verstanden.
Aber etzt die sache, die mich am meinsten beschaftigt. Nochmal zu dieser zeile:
Delphi-Quellcode:
Wenn ihr nun sagt, das ItemIndex immer der Aktuel ausgewählte Text in der Combobox ist, ist es doch egal, welches ich nun auswähle, da ja wie gesagt nur der Ausgewählte eben ItemIndex heißt.
S := ComboBox1.Items.Strings[ComboBox1.ItemIndex];
Aber ich möchte ja damit verschiedene Sachen öffnn. Sagen wir, wenn ich "Hans" ausähle, möchte ich alle Daten von Hans haben, oder wenn ich "Peter" auswähle, alle daten von Peter. Das geht aber ja so nich, weil wenn ich Hans auswähle das ausgewählte ItemIndex heißt und bei Pter genau so. Oder gibt es da vielleicht as besseres wie ne Combobox? |
Re: ComboBox auswählen + Daten anzeigen
ItemIndex ist nur der Index ( Position) des ausgewählten Eintrags.
Über diesen kann man dann die restlichen Daten auswählen. Wenn man diese z.B. in einem dynamischen Array speichert. |
Re: ComboBox auswählen + Daten anzeigen
Versteh ich echt nich.
Kannste nich mal ein ganz einfaches beispiel machen. ItemIndex kann doch nich mehrere sachen speichern. Ich speicher ja die ganzen sachen n einer .ini . Die ersten sachen i der Section1, die anderen in Section2 . Wenn ich jetzt wie gerade erwähnt Peter auswähle möchte ich ja die sachen von peter haben. Wenn aber ItemIndex sich nicht verändert wird er mir ja immer nur das anzeigen, was ich ItemIndex zugewiesen hab. ich versuche das mal klar zu machen: So angenommen wir sagen ItemIndex ist eine variable, wovon ich jetzt ausgehe. Dann sagen wir: peter ist ItemIndex Hans ist ItemIndex Dieter ist IntemIndex Und ich weise ItemIndex jetzt den String "Guten tag" zu, dann ist es ja egal ob ich Peter, hans oder Dieter nehme, da ja alles ItemIndex ist und er sowieso immer "Guten tag" ausgeben wird. Ich möchte es aber so: peter ist x hans ist y Dieter ist z x="hallo" y="bye" z="beispiel" Dann gibt er mir ja jenachdem was sich wähle, was anderes aus. Hoffe ihr versteht meine Logik |
Re: ComboBox auswählen + Daten anzeigen
Dem ItemIndex wird nix zugewiesen, dieser Index zeigt nur auf den Eintrag in der Liste, der gerade angezeigt wird.
|
Re: ComboBox auswählen + Daten anzeigen
Index Name
0 Peter 1 Hans 2 Dieter 3 ... ... Wenn du Peter auswählst ist ItemIndex 0, bei Hans 1 und bei Dieter 2 |
Re: ComboBox auswählen + Daten anzeigen
Ok soweit so gut.
Jetzt aber wieder die frage, woher weiß er dann, was ich ausgewählt habe. Wenn er nichts speichert, sondern nur das gerade ausgewählte anzeigt, dann kann ich ja nichts zuweisen. Genau das ist ja mein problem. wie bekomme ich das hin, je nachdem, was ich auswähle, soll er mir was anderes in einem Editfeld ausgeben. Könntet ihr mir mal so nen Code machen, vielleicht verstee ich es ja dann. Also in der Combobox stehen die Ziffern 1, 2, 3 . Wenn ich in der Combobox 1 auswähle soll er mir in einem Editfeld "ich bin die 1" anzeigen Bei 2: "Ich bin die 2" und bei 3: "Ich bin die 3" Könnte mir ds jemand machen? EDIT hab gerade gesehen, das jemand noch geschrieben hat. Aber er fängt immer bei 0 an zu zählen oder? Wenn ja, dann wäre meine frage ja beantwortet. Nur eine sache noch. Wie rufe ich jetzt im Code die Sachen auf? Also z.b.
Delphi-Quellcode:
Edit1.ItemIndex1.Text ('Hallo')
Edit1.ItemIndex2.Text ('Guten tag') oder wie geht das? |
Re: ComboBox auswählen + Daten anzeigen
Vieleicht hilft dir das ein wenig auf die Sprünge. :zwinker:
Delphi-Quellcode:
procedure TForm1.ListBox1Click(Sender: TObject);
begin Showmessage(IntToStr(ListBox1.ItemIndex) +' - '+ ListBox1.Items.Strings[ListBox1.ItemIndex]); end; |
Re: ComboBox auswählen + Daten anzeigen
Was soll mir das sagen?
Was will ich den mit nr Listbox? |
Re: ComboBox auswählen + Daten anzeigen
Nagut dann als Combo :zwinker:
Delphi-Quellcode:
procedure TForm1.ComboBox1Change(Sender: TObject);
begin Showmessage(IntToStr(ComboBox1.ItemIndex) +' - '+ ComboBox1.Items.Strings[ComboBox1.ItemIndex]); end; |
Re: ComboBox auswählen + Daten anzeigen
Ist ja eigentlich egal ob ListBox oder ComboBox.
Wenn die Infos in einem Array eines Records mit den Details stehen (Namen)
Delphi-Quellcode:
procedure TForm1.cbVornameOnChange( Sender: TObject);
begin edVorname.Text := Namen[cbVorname.ItemIndex].Vorname; edName.Text := Namen[cbVorname.ItemIndex].Name; edPlz.Text := Namen[cbVorname.ItemIndex].Plz; ... end; |
Re: ComboBox auswählen + Daten anzeigen
Hab' mir das nun nicht alles durchgelesen, aber meinst du so etwas:
Delphi-Quellcode:
procedure TForm1.Combobox1Change(Sender:TObject);
begin edit1.text:='ich bin die '+TCombobox(Sender).Items[TCommbobox(Sender).ItemIndex] end; |
Re: ComboBox auswählen + Daten anzeigen
Arrrrr, ich weiß ihr wollt mir nur helfen, abe das versteh ich nicht.
Ihr sagtet doch was mit ItemIndex1 usw. Das kan ich aber in euren Codes nicht finden. |
Re: ComboBox auswählen + Daten anzeigen
Es gibt einen ItemIndex pro ComboBox. Und dieser hat den Wert des ausgewählten Eintrags
|
Re: ComboBox auswählen + Daten anzeigen
ja aber wie unterscheidet man den dann, was ich ausgewählt habe?
Wir drehen uns irgentwie im kreis. Sry aber es muss doch irgentwo ne anleitung geben, wie man zwischen den verschiedenen Sachen auswählt. Aber danke da sihr so geduldig seit^^. |
Re: ComboBox auswählen + Daten anzeigen
Ähhhh, ja, ich denke auch....
Der ItemIndex gibt die Nummer des ausgewählten Listenelements (also den Index) an. Sorry, aber was verstehst du denn daran nicht? |
Re: ComboBox auswählen + Daten anzeigen
Ok, nochmal.
Also ich habe jetzt eine Combobox mit folgenden Texten drin: 1 2 3 4 5 So wenn ich jetzt 1 auswähle, hat die 1 ItemIndex. Wenn ich 2 auswähle, dann hat die 2 auch ItemIndex. Und das gleiche bei dem Rest auch. Aber jenachdem, was ich auswähle soll aber was anderes in einem Editfeld angeziegt werden. Wie mache ich das jetzt? Also zeigt mir doch jetzt einfch mal euren Code für folgende aufgabe. Ihr macht eine Combobox und macht dort fplgende einträge rein. 1 2 3 Wenn ich die 1 auswähle, soll in dem Editfeld "Hallo" stehen. Bei 2 soll dort "Guten tag" stehen. Und bei 3 soll da "bye" stehen. So wie sieht jetzt der Code dafür aus? Wenn ich dfür den code habe, ist meine frage beantwortet. |
Re: ComboBox auswählen + Daten anzeigen
Auch wenn's schon mal gesagt wurde...
So wenn ich jetzt 1 auswähle, ist ItemIndex=0 Wenn ich 2 auswähle, ist ItemIndex=1 usw. |
Re: ComboBox auswählen + Daten anzeigen
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
ich hab mal ein einfaches Beispiel angehängt. Bei der ersten ComboBox wird der ItemIndex abgefragt, bei der Zweiten der Text. |
Re: ComboBox auswählen + Daten anzeigen
Nun ist es auch egal :zwinker:
Delphi-Quellcode:
procedure TForm1.ComboBox1Change(Sender: TObject);
begin case ComboBox1.ItemIndex of 0: Edit1.Text:='Hallo'; 1: Edit1.Text:='Guten tag'; 2: Edit1.Text:='bye'; end; end; |
Re: ComboBox auswählen + Daten anzeigen
So endlich.
Dankesehr, ds is genau das wa sich wollte^^. Werde es jetzt probeiren, sollte aber jetzt gehen. |
Re: ComboBox auswählen + Daten anzeigen
Und was ist jetzt anders als bei den vorigen Beispielen?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:39 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