Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   ComboBox auswählen + Daten anzeigen (https://www.delphipraxis.net/126966-combobox-auswaehlen-daten-anzeigen.html)

SyntaxXx 5. Jan 2009 21:04


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

fkerber 5. Jan 2009 21:06

Re: ComboBox auswählen + Daten anzeigen
 
Hi!

Was du suchst ist wohl das OnChange-Event!


Ciao, Frederic

SyntaxXx 5. Jan 2009 21:14

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?

Helmi 5. Jan 2009 21:17

Re: ComboBox auswählen + Daten anzeigen
 
Hallo,

du könntest eine Ini-Datei aufbauen, die etwa so ausschaut:

Zitat:

[Huber]
Name=Alfons
Nachname=Huber
Alter=100
Ort=Am Arsch der Welt

[Maier]
Name=Irene
Nachname=Maier
Alter=45
Ort=Am Arsch der Welt links
Im OnSelect deiner ComboBox könntest dann das machen:
Delphi-Quellcode:
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;
So könntest z. B. die Section "Huber" auslesen, wenn in der ComboBox "Huber" ausgewählt wurde.
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

fkerber 5. Jan 2009 21:19

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

SyntaxXx 5. Jan 2009 21:40

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.

Helmi 5. Jan 2009 21:44

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

SyntaxXx 5. Jan 2009 22:44

Re: ComboBox auswählen + Daten anzeigen
 
Gut dann hab ich noch ein paar fragen zu deinem code:

z.b. das hier:

Delphi-Quellcode:
 try
    //Nachname aus ComboBox auslesen
    S := ComboBox1.Items.Strings[ComboBox1.ItemIndex];
Woher weiß er jetzt, welche Datei ich auswählen will.
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

mkinzler 5. Jan 2009 22:50

Re: ComboBox auswählen + Daten anzeigen
 
Zitat:

Da steht ja nur ItemIndex und nicht was genaues. Das könnte ja doch jeder text in der Combobox sein.
ItemIndex ist der Index des ausgewählten Eintrags
Zitat:

Delphi-Quellcode:
IniFile.ReadSectionValues(S, StringList_Name);

Liest alle Werte eines Abschnitts auf einen Rutsch
Zitat:

Delphi-Quellcode:
Alter := StringList.Values['Alter'];

Ermittelt den Wert der Eigenschaft Alter aus der Stringlsite, in der die Wertepaare eines Abschnitts geladen wurden

SyntaxXx 5. Jan 2009 23:04

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 13:57 Uhr.
Seite 1 von 4  1 23     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz