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

Delphi 10.4.2 и ComboBox


gonzales

Вопрос

Доброго времени суток. Очередной косяк от Эмбы не заставил себя долго ждать, то незыблемое, что работало - работать перестало)))

Вот простой код (на форме один ComboBox и две кнопки)

procedure TForm1.Button1Click(Sender: TObject);
var
item: tlistboxitem;
i:integer;
begin
  form1.ComboBox1.Clear;
 for i := 1 to 2 do
  begin
   item := tlistboxitem.Create(nil);
   item.Text := inttostr(i);
   item.Parent := form1.ComboBox1;
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
item: tlistboxitem;
i:integer;
begin
  form1.ComboBox1.Clear;
 for i := 3 to 4 do
  begin
   item := tlistboxitem.Create(nil);
   item.Text := inttostr(i);
   item.Parent := form1.ComboBox1;
  end;
end;

В результате Комбик заполняется только один раз, то есть если нажать на первую кнопку то заполнится числами 1 и 2, или если нажать вторую кнопку то заполнится числами 3 и 4, но больше комбик не заполняется другими числами, если была нажата кнопка 1, а потом кнопка 2, то в комбике все равно остаются числа 1 и 2.

Это фиаско((((

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

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

  • 0
45 минут назад, Tumaso сказал:

А beginupdate / endupdate при заполнении combobox ты используешь?

Это первое, что использовал.

Все уже перепробовал, и апдейты и репейнты. Не работает, хоть тресни. Причем, если оставить просто form1.ComboBox1.Clear; - то очищение происходит корректно

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

эмм
вот вполне рабочий вариант

procedure TForm1.b1Click(Sender: TObject);
var
  item: tlistboxitem;
  i: integer;
begin
  for i := 1 to 2 do
  begin
    item := tlistboxitem.Create(nil);
    item.Text := inttostr(i);
    cbb1.ListBox.AddObject(item);
  end;
end;

procedure TForm1.b2Click(Sender: TObject);
var
  item: tlistboxitem;
  i: integer;
begin

  for i := 3 to 4 do
  begin
    item := tlistboxitem.Create(nil);
    item.Text := inttostr(i);
    cbb1.ListBox.AddObject(item);
  end;
end;

 

Ссылка на комментарий
  • 0
6 часов назад, krapotkin сказал:

вот вполне рабочий вариант

не работает(((

6 часов назад, OnePeople сказал:

Так тоже работает

так тоже не работает(((

 

В 10.4.1. все работает всеми способами. Обращу внимание, что проблема именно с перерисовкой listbox внутри combobox

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

нашел, когда проявляется бага. Попробуйте нажать b1, потом раскрыть комбобокс, увидите значения 1 и 2, затем нажмите b2 и посмотрите что будет в комбобоксе. Ожидаем увидеть 1,2,3,4 ...;)

 

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

ыыыы. углубленное тестирование принесло еще более интересные результаты.

b1 - открыть кб - b2 :

в выпадающем списке действительно нет 3 и 4

но если просто в кб стрелками вверх-вниз, то 3 и 4 появляются! ))

 

короче, все решаем просто. как в родном VCL

procedure TForm1.b2Click(Sender: TObject);
var
  i: integer;
begin
  for i := 3 to 4 do
  begin
    cbb1.items.add(inttostr(i));
  end;
end;

кстати, после этого и "скрытые" 1 2 тоже появляются.

Общая идея, короче - не переусложнять! ))

Изменено пользователем krapotkin
Ссылка на комментарий
  • 0

А мне надо к item пристегнуть checkbox и объект. При старом items.add - это не работало, поэтому и был такой механизм создания TListBoxItem со всеми нужными параметрами и запихивание его в listbox комбика.

В любом случае спасибо, буду дальше рыть

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

в кб текстовые итемы и listBoxItems хранятся раздельно

и видимо, прямая связь - создание итемов по тексту - осталась, а обратная - потерялась в какой то переделке)

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

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

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

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

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

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

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

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

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

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...