Показать полную графическую версию : [решено] ComboBox
Dodakaedr
07-06-2015, 18:24
Имеется кнопка которая меняет весь текст программы. Подскажите как менять текст пунктов(Items) combobox'a при смене языка? Как задать новый текст?
Подскажите как менять текст пунктов(Items) combobox'a при смене языка? »
Удалить все пункты и добавить заново — так не подходит?
Dodakaedr
07-06-2015, 19:14
Удалить все пункты и добавить заново — так не подходит? »
Как вариант попробую. И теперь еще один вопрос возник: так как список будет очищаться соответственно и выбор будет обнуляться. Как сохранить выбранный пункт при смене языка?
Как сохранить выбранный пункт при смене языка? »
Переменные отменили?
1. Перед очисткой пунктов получайте ID (1,2,3 и т.д.) текущего выбранного пункта (CB_GETCURSEL сообщение, если пишите на winapi)
2. Очищаете пункты (CB_RESETCONTENT, если пишите на winapi)
3. Заполняете пунктами (CB_ADDSTRING, если... :))
4. Устанавливаете ту позицию, которую определили перед очисткой пунктов (CB_SETCURSEL, если... :))
Dodakaedr
07-06-2015, 20:42
если пишите на winapi »
нет, не на winapi.
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
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;
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.