ComboBox
Имеется кнопка которая меняет весь текст программы. Подскажите как менять текст пунктов(Items) combobox'a при смене языка? Как задать новый текст?
|
Цитата:
Цитата Dodakaedr
Подскажите как менять текст пунктов(Items) combobox'a при смене языка? »
|
Удалить все пункты и добавить заново — так не подходит?
|
Цитата:
Цитата Iska
Удалить все пункты и добавить заново — так не подходит? »
|
Как вариант попробую. И теперь еще один вопрос возник: так как список будет очищаться соответственно и выбор будет обнуляться. Как сохранить выбранный пункт при смене языка?
|
Цитата:
Цитата Dodakaedr
Как сохранить выбранный пункт при смене языка? »
|
Переменные отменили?
1. Перед очисткой пунктов получайте ID (1,2,3 и т.д.) текущего выбранного пункта (CB_GETCURSEL сообщение, если пишите на winapi)
2. Очищаете пункты (CB_RESETCONTENT, если пишите на winapi)
3. Заполняете пунктами (CB_ADDSTRING, если... :))
4. Устанавливаете ту позицию, которую определили перед очисткой пунктов (CB_SETCURSEL, если... :))
|
Можно ....для примера
Код:
var
SelectedItem: Integer;
......
procedure TForm1.FormCreate(Sender: TObject);
begin
cbb1.Items.Clear;
cbb1.Items.LoadFromFile('File_En'); // или TStringList (cbb1.Items.AddStrings)
cbb1.ItemIndex:=0;
end;
procedure TForm1.cbb1Change(Sender: TObject);
begin
SelectedItem := cbb1.ItemIndex;
end;
procedure TForm1.btn1Click(Sender: TObject);
begin
cbb1.Items.Clear;
cbb1.Items.LoadFromFile('File_Ru'); // или TStringList (cbb1.Items.AddStrings)
cbb1.ItemIndex:=SelectedItem;
end;
|
El Sanchez |
09-06-2015 11:45 2516474 |
Dodakaedr, не забывайте про проверки. Если вдруг окажется так, что File_En не существует или пустой, то будет плохо с cbb1.ItemIndex:=0. Если File_Ru пустой или File_Ru содержит меньше строк, чем File_En и SelectedItem вдруг выходит за пределы количества строк в File_Ru, то будет плохо с cbb1.ItemIndex:=SelectedItem.
Скрытый текст
Код:
var
SelectedItem: Integer;
......
procedure TForm1.FormCreate(Sender: TObject);
begin
cbb1.Items.Clear;
cbb1.Items.LoadFromFile('File_En'); // или TStringList (cbb1.Items.AddStrings)
if cbbl.Items.Count > 0 then
cbb1.ItemIndex:=0;
end;
procedure TForm1.cbb1Change(Sender: TObject);
begin
SelectedItem := cbb1.ItemIndex;
end;
procedure TForm1.btn1Click(Sender: TObject);
begin
cbb1.Items.Clear;
cbb1.Items.LoadFromFile('File_Ru'); // или TStringList (cbb1.Items.AddStrings)
if cbbl.Items.Count > 0 then
if SelectedItem < cbbl.Items.Count then
cbb1.ItemIndex:=SelectedItem
else
cbb1.ItemIndex:=0;
end;
|
В окончательном виде исключить и другую возможную ошибку!
Изменение в одной из строк кода
Код:
// или
var
SelectedItem: Integer=0; // начальное значение
// или
procedure TForm1.FormCreate(Sender: TObject);
begin
cbb1.Items.Clear;
cbb1.Items.LoadFromFile('File_En'); // или TStringList (cbb1.Items.AddStrings)
if cbbl.Items.Count > 0 then
begin
cbb1.ItemIndex:=0;
SelectedItem := cbb1.ItemIndex; // начальное значение
end;
end;
|
Время: 19:40.
© OSzone.net 2001-