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

Стилизованный выпадающий список


Morfi

Вопрос

Столкнулся с такой проблемой:

Есть форма с TComboBox. Стиль форме (один из тех, который поставляется из коробки) задаю в run-time:

procedure TFormEditorRoomAttribute.FormCreate(Sender: TObject);
begin
  inherited;
  self.StyleBook := uAccommodationInventory.ReferenceAccommodationInventoryForm.StyleBook;
end;

Необходимо, чтобы TComboBox отображал items c bitmap. Заполняю TComboBox.ListBox так же в run-time (TListBoxItem.StyleLookup := 'listboxitemleftdetail'):

var
  I: integer;
  FListBoxItem: TListBoxItem;
begin
  //cbPicture: TCombobox;
  Self.cbPicture.BeginUpdate;

  Self.FRoomAttributePictures := ConnectionModule.DSServerModuleAccommodationClient.GetRoomAttributePictures;
  for I := 0 to Self.FRoomAttributePictures.Count - 1
  do
    begin
      FListBoxItem := TListBoxItem.Create(Self.cbPicture);
      FListBoxItem.TagObject:= Self.FRoomAttributePictures[i];

      FListBoxItem.ItemData.Text := Self.FRoomAttributePictures[i].ID.ToString;
      FListBoxItem.ItemData.Bitmap := Self.FRoomAttributePictures[i].GetBitmap;
      FListBoxItem.StyleLookup := 'listboxitemleftdetail';
      Self.cbPicture.AddObject(FListBoxItem);
    end;
  Self.cbPicture.EndUpdate;
end;

TComboBox.DropDownKind выставляю в "Custom".
Вроде как всё готово. Но получается вот такая картина.

Создаю и отображаю форму, bitmap в TCombobox отображен:
0001.png.bf0853437e25d59afe15edf28d6b2f33.png

Раскрываю список, bitmaps так же отображаются:
0002.png.1009cda5894b9dbbb7fbbfdff83ec01f.png

Но, как только выбираю один из items, происходит следующее:
0003.png.ed5d07f9a77f609986a9b7bd2090c83e.png
выбранный item не отображается, вообще!

Долго ли, мало ли копался в исходниках TCombobox...

В общем нашел некоторое решение данной проблемы. На событие TComboBox.OnClosePopup повесил код:

begin
  //cbPicture: TCombobox;
  self.cbPicture.Selected.NeedStyleLookup;
  self.cbPicture.NeedStyleLookup;
  self.ApplyStyleLookup;
end;

Результат, выбранный item отображается в TCombobox:
0004.png.2b2db7974dd335b63980b0f4cbf11aac.png

 

Теперь вопрос: Так и должно отрабатывать? Или что-то делаю не так?! Если что-то делаю не так, то как надо делать?

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

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

Ответов пока нет

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

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

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

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

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

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

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

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

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