Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - markierten Comboboxtext ändern
der organist - Fr 17.10.08 17:56
Titel: markierten Comboboxtext ändern
hi Leutz,
ich möchte in meinem Programm die Möglichkeit haben, die Sprache zu wechseln. Probleme habe ich bei den Comboboxen:
Delphi-Quelltext
1: 2:
| if Combobox1.Text = 'Schwar' then Combobox1.Text := 'Black'; |
funzt nur leider nicht....
{und das Forum nützt da gerade auch wenig...ca 25 min Zeitaufwand}
Ich hab auch schon Dinge mit
Items.[Combobox.ItemIndex] probiert, aber alles in allem hat das nichts geholfen.
Fabian E. - Fr 17.10.08 18:24
Doch genau so sollte es klappen... Bei mir jedenfalls...
Liegt es vielleicht an deinem "Schwar"? Und nicht "Schwarz"?
der organist - Fr 17.10.08 19:14
nö, ich denke nicht, denn ich habe den Text hier nicht reinkopiert, SChreibfehler
Delete - Fr 17.10.08 19:19
Bei einer Combobox macht es IMHO nicht viel Sinn, den Text zu ändern, man muss dann schon andere Items laden und ggf. den ItemIndex wiederherstellen.
LexXis - Fr 17.10.08 19:19
Für den Fall, dass du den Text des
ausgewählten Eintrags ändern willst:
Was du brauchst sind
ComboBox.ItemIndex und
ComboBox.Items.Strings
Bastel damit mal ein wenig rum :)
mfg
//EDIT: Ich geb meinem Vorredner allerdings zu 100% recht. Lieber die ComboBox leeren und neu füllen.
//EDIT 2:
Delphi-Quelltext
1: 2:
| ComboBox.Items.Strings[ComboBox1.ItemIndex] := 'Black'; ComboBox.Text := 'Black'; |
Funktioniert doch einwandfrei o_O
der organist - Fr 17.10.08 19:33
Delphi-Quelltext
1: 2: 3: 4: 5:
| if Combobox1.Items[Combobox.ItemIndex] = 'Schwarz' then Combobox1.Text := 'Black'; |
LexXis - Fr 17.10.08 19:39
der organist hat folgendes geschrieben : |
Delphi-Quelltext 1: 2: 3: 4: 5:
| if Combobox1.Text = 'Schwarz' then begin Combobox1.Text := 'Black'; ComboBox1.Items.Strings[ComboBox1.ItemIndex] := 'Black'; end; | |
Aber ich kann mich nur wiederholen: Lösche lieber den Inhalt deiner ComboBox und befülle sie komplett neu! Alles andere ist IMHO nur Rumgefrickel.
der organist - Fr 17.10.08 19:42
ok, ich habe sie neu befüllt, aber wie kriege ich die alte Auswahl nur in der anderen Sprache wieder?
EDIT: Ich glaub die Frage war völlig überflüssig, ich hab ne Lösung gefunden, sollte die nich funzen, melde ich mich wieder (und das läuft nicht über den Text wie vorher)
LexXis - Fr 17.10.08 19:45
Es lebe der ItemIndex und eine Variable zum "zwischenspeichern".. ;)
Gutes Weiterkommen
Delete - Fr 17.10.08 19:53
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56:
| type TLanguage = (lDeutsch,lEnglish);
TForm1 = class(TForm) ... private iLanguage: TLanguage; procedure ChangeLanguage; ... end;
...
implementation
{$R *.dfm}
const sDeutsch: array[0..3] of string = ('Schwarz','Weiß','Gelb','Blau'); sEnglish: array[0..3] of string = ('Black','White','Yellow','Blue');
procedure TForm1.Button1Click(Sender: TObject); begin ChangeLanguage; end;
procedure TForm1.ChangeLanguage; var OldIndex, i: Integer; begin OldIndex := ComboBox1.ItemIndex; ComboBox1.Items.BeginUpdate; try ComboBox1.Items.Clear; case iLanguage of lDeutsch: begin for i := Low(sEnglish) to High(sEnglish) do ComboBox1.Items.Add(sEnglish[i]); iLanguage := lEnglish; end; lEnglish: begin for i := Low(sDeutsch) to High(sDeutsch) do ComboBox1.Items.Add(sDeutsch[i]); iLanguage := lDeutsch; end; end; finally ComboBox1.Items.EndUpdate; ComboBox1.ItemIndex := OldIndex; end; end;
procedure TForm1.FormCreate(Sender: TObject); begin iLanguage := lEnglish; ChangeLanguage; end; |
Das ist nur eine schnell dahingetippte Möglichkeit, man könnte auch Ressourcestrings verwenden etc.
der organist - Fr 17.10.08 19:54
Danke, hat funktioniert.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!