Autor Beitrag
der organist
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 467
Erhaltene Danke: 17

WIN 7
NQC, Basic, Delphi 2010
BeitragVerfasst: Fr 17.10.08 17:56 
hi Leutz,

ich möchte in meinem Programm die Möglichkeit haben, die Sprache zu wechseln. Probleme habe ich bei den Comboboxen:

ausblenden 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.

_________________
»Gedanken sind mächtiger als Waffen. Wir erlauben es unseren Bürgern nicht, Waffen zu führen - warum sollten wir es ihnen erlauben, selbständig zu denken?« Josef Stalin
Fabian E.
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 554

Windows 7 Ultimate
Visual Studio 2008 Pro, Visual Studion 2010 Ultimate
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 467
Erhaltene Danke: 17

WIN 7
NQC, Basic, Delphi 2010
BeitragVerfasst: Fr 17.10.08 19:14 
nö, ich denke nicht, denn ich habe den Text hier nicht reinkopiert, SChreibfehler

_________________
»Gedanken sind mächtiger als Waffen. Wir erlauben es unseren Bürgern nicht, Waffen zu führen - warum sollten wir es ihnen erlauben, selbständig zu denken?« Josef Stalin
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 170
Erhaltene Danke: 3



BeitragVerfasst: 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:
ausblenden Delphi-Quelltext
1:
2:
ComboBox.Items.Strings[ComboBox1.ItemIndex] := 'Black';
ComboBox.Text := 'Black';


Funktioniert doch einwandfrei o_O
der organist Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 467
Erhaltene Danke: 17

WIN 7
NQC, Basic, Delphi 2010
BeitragVerfasst: Fr 17.10.08 19:33 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
//Ich möchte den Text ändern können, damit man nahtlos zwischen den SPrachen hin und her wechseln kann
//Das mit dem Index und Co, z.B.so?

if Combobox1.Items[Combobox.ItemIndex] = 'Schwarz' then
  Combobox1.Text := 'Black';

_________________
»Gedanken sind mächtiger als Waffen. Wir erlauben es unseren Bürgern nicht, Waffen zu führen - warum sollten wir es ihnen erlauben, selbständig zu denken?« Josef Stalin
LexXis
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 170
Erhaltene Danke: 3



BeitragVerfasst: Fr 17.10.08 19:39 
user profile iconder organist hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 467
Erhaltene Danke: 17

WIN 7
NQC, Basic, Delphi 2010
BeitragVerfasst: 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)

_________________
»Gedanken sind mächtiger als Waffen. Wir erlauben es unseren Bürgern nicht, Waffen zu führen - warum sollten wir es ihnen erlauben, selbständig zu denken?« Josef Stalin
LexXis
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 170
Erhaltene Danke: 3



BeitragVerfasst: Fr 17.10.08 19:45 
Es lebe der ItemIndex und eine Variable zum "zwischenspeichern".. ;)

Gutes Weiterkommen
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 17.10.08 19:53 
ausblenden volle Höhe 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
    { Private-Deklarationen }
    iLanguage: TLanguage;
    procedure ChangeLanguage;
  ...
  end;

...

implementation

{$R *.dfm}

const sDeutsch: array[0..3of string = ('Schwarz','Weiß','Gelb','Blau');
      sEnglish: array[0..3of 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 467
Erhaltene Danke: 17

WIN 7
NQC, Basic, Delphi 2010
BeitragVerfasst: Fr 17.10.08 19:54 
Danke, hat funktioniert.

_________________
»Gedanken sind mächtiger als Waffen. Wir erlauben es unseren Bürgern nicht, Waffen zu führen - warum sollten wir es ihnen erlauben, selbständig zu denken?« Josef Stalin