Перейти к содержанию
Fire Monkey от А до Я
  • 0

Странное поведение XE8


Alex Bozhko

Вопрос

На форму кладём TTabControl с двумя табами. На одном из них помещаем ComboBox.

 

В процедуре формируем item'ы. Примерно так:

procedure TForm1.FormCombo(aCombo: TComboBox);
var
 Item: TListBoxItem;
 i: integer;
begin

    aCombo.BeginUpdate;
    aCombo.Items.Clear;

     for I := 0 to 2 do
     begin
        Item := TListBoxItem.Create(nil);
        Item.Text := 'Item '+IntToStr(I);
        Item.StyleLookup:= 'listboxitemstyle';
        Item.Parent := aCombo;
     end;

    aCombo.EndUpdate;
end;

Вызываем при создании формы:

procedure TForm1.FormCreate(Sender: TObject);
begin
  FormCombo(ComboBox1);
  ComboBox1.ItemIndex:= 0;
end; 

и пересоздаем список item'ов после переключения табов.

procedure TForm1.TabControl1Change(Sender: TObject);
begin
  if TabControl1.TabIndex= 0 then
  begin
    FormCombo(ComboBox1);
    ComboBox1.ItemIndex:= 0;
  end;
end;

Естественно, устанавливаем активный item, после того как их список сформирован.

 

В XE7 всё работает как часы.

В XE8 - артефакт. После переключения табов активный Item - нулевой, но ComboBox не отображает его значение. Визуально это выглядит так, будто ItemIndex = -1.

 

imagejcj.png

 

Проекты для XE7 и XE8 прикрепил.

 

https://yadi.sk/d/4FGvgF-ti5dWz

Изменено пользователем Brovin Yaroslav
Ссылка на комментарий

Рекомендуемые сообщения

  • 0
В 7/25/2015в17:10, Alex Bozhko сказал:

Решается если предварительно перед очисткой списка выполнить

Цитата

ComboBox1.ItemIndex:= -1;

 Но, ИМХО, это не верно.

Да. Логично было бы если бы сама очистка устанавливала ItemIndex := -1; т.к. Combobox1.Items[0]  в этот момент перестает существовать. А так приходится это делать самому.

Combobox1 перезаполняется если происходит смена индекса, а в приведенном примере он не меняется (был 0 до очистки, присвоили 0 после очистки).

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...