|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Загрузка Items*в в несколько ComboBox*ов
Приветствую.
Значит проблема такая: На форме есть несколько ComboBox*в. И есть ListBox со значениями. Мне надо загрузить ComboBox*ам значения из ListBox Именно весь список значений в каждый ComboBox. Что б получилось что то типо такого: Код:
var i:integer; for i :=15 to 25 do begin Form1.ComboBox[i].Items:= Form1.ListBox1.Items; end; Последний раз редактировалось TEKTON, 24.07.2018 в 02:48. |
#2
|
|||
|
|||
Цитата:
Ну так грузи: Код:
Form1.ComboBox1.Items.Assign(Form1.ListBox1.Items); Form1.ComboBox2.Items.Assign(Form1.ListBox1.Items); ... |
#3
|
|||
|
|||
Цитата:
Но дело в том, что ComboBox*ов много. И если каждому присваивать значение, то это целая "простыня" получится. Работать будет, не спорю. Но хочется код оптимизировать. И я хочу в цикле присваивать им индексы Сделать типо перебора ComboBox*ов (с 15го по 25й) Код:
Тут цикл begin Form1.ComboBox[i].Items.Assign(Form1.ListBox1.Items); end; Как сделать конструкцию ComboBox[i] ? Последний раз редактировалось TEKTON, 24.07.2018 в 08:57. |
#4
|
||||
|
||||
Цитата:
Код:
for i := 0 to Form1.ComponentCount - 1 do if Form1.Components[i] is TComboBox then (Form1.Components[i] as TComboBox).Items.Assign(Form1.ListBox1.Items); Код:
for i := 15 to 25 do if Form1.FindComponent('ComboBox' + IntToStr(i)) <> nil then (Form1.FindComponent('ComboBox' + IntToStr(i)) as TComboBox).Items.Assign(Form1.ListBox1.Items); Я не понял Вашего вопроса, но всё же Вам на него отвечу! Последний раз редактировалось Alegun, 24.07.2018 в 09:12. |
Этот пользователь сказал Спасибо Alegun за это полезное сообщение: | ||
TEKTON (24.07.2018)
|
#5
|
|||
|
|||
Alegun, спасибо огромное!
Второй вариант то что нужно! Тему можно прикрыть. |
#6
|
|||
|
|||
Погонял программку, но работает не очень коректно.
В ComboBox*сы список загружается, но при клике на кнопке обработчика, данные из ComboBox*а не брабатываются, как буд то ComboBox пустой. Скорее всего это связано с ItemIndex*ом. Но если открыть ComboBox и выбрать значение вручную, то всё работает нормально. Как дополнить цикл, что б программно выбиралось первое значение из ComboBox ? Короче надо съэмулировать, как будто я открыл ComboBox и выбрал первое значение. Последний раз редактировалось TEKTON, 25.07.2018 в 08:02. |
#7
|
||||
|
||||
ComboBox.ItemIndex:=Значение_которое_ты_хочешь
Если нужно первое, то 0. Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |
#8
|
|||
|
|||
Цитата:
Код:
[dcc32 Error] Unit1.pas(763): E2003 Undeclared identifier: 'ComboBox' Повторю ещё раз вопрос: Как дополнить цикл который привёл Alegun ? Цитата:
Тип такого ? Код:
for i := 15 to 25 do if Form1.FindComponent('ComboBox' + IntToStr(i)) <> nil then (Form1.FindComponent('ComboBox' + IntToStr(i)) as TComboBox).Items.Assign(Form1.ListBox1.Items); (Form1.FindComponent('ComboBox' + IntToStr(i)) as TComboBox).ItemIndex:=0; end; |
#9
|
|||
|
|||
Код:
for i := 15 to 25 do if Form1.FindComponent('ComboBox' + IntToStr(i)) <> nil then (Form1.FindComponent('ComboBox' + IntToStr(i)) as TComboBox).Items.Assign(Form1.ListBox1.Items); (Form1.FindComponent('ComboBox' + IntToStr(i)) as TComboBox).ItemIndex:=0; end; // тут конец |
#10
|
||||
|
||||
Многовато что-то вызовов функции поиска компонентов за один проход получается, тогда лучше завести переменную типа TComponent, "найти" в неё нужный комбик и работать уже с ним. Ну и соблюдение орфографии и блочных конструкций используемого ЯП
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#11
|
|||
|
|||
Цитата:
конец-то конец. Но лучше как-то так: Код:
var I : Integer; cb : TComboBox; begin for i := 15 to 25 do begin cb := TComboBox(Form1.FindComponent('ComboBox' + IntToStr(I))); if cb <> Nil Then begin cb.Items.Assign(Form1.ListBox1.Items); cb.ItemIndex := 0; end; end; end; |
Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
TEKTON (27.07.2018)
|