Форум: "Начинающим";
Текущий архив: 2008.08.10;
Скачать: [xml.tar.bz2];
ВнизКак в цикле перебрать допустим combobox1, combobox2 Найти похожие ветки
← →
Muh (2008-07-09 07:55) [0]Я хочу допустим присвоить combobox1, combobox2, combobox3, combobox4
присвоить значение 1..каждому комбобоху.
как это сделать в цикле?
спасибо
← →
engine © (2008-07-09 08:04) [1]for i := 0 to ComponentCount - 1 do
if Components[i] is TComboBox then
(Components[i] as TComboBox).Tag := 1;
← →
Григорьев Антон © (2008-07-09 08:09) [2]1-ый вариант:
for I := 0 to ComponentCount - 1 do
if Components[I] is TComboBox then
TComboBox(Components[I]).ItemIndex := 1;
Перебирает все компоненты, владельцем которого является форма (точнее, тот объект, в методе которого вызывается этот код), проверяет, является ли найденный компонент ComboBox"ом и если да, присваивает ему то, что нужно. Достоинство - не привязан к именам ComboBox"ов, недостаток - изменит все ComboBox"ы, а в некоторых случаях требуется менять только часть.
2-ой вариант:var
Combo: TComboBox;
for I := 1 to MaxComboBoxNumber do
begin
Combo := TComboBox(FindComponent("ComboBox" + IntToStr(I)));
if Assigned(Combo) then
Combo.ItemIndex := 1
end;
Ищет среди принадлежащих форме компонентов все, имена которых имеют вид "ComboBox<N>", где N меняется от 1 до MaxComboBoxNumber, и присваивает им то, что нужно. Достоинства - легко сделать фильтр по именам и затрагивать не все ComboBox"ы. Недостатки: во-первых, если компонент, отличный от TComboBox, вдруг будет иметь имя "ComboBox<N>", возникнет ошибка (это, впрочем, легко устраняется дополнительной проверкой), а во-вторых, FindComponent - очень медленная операция, способ получается затратным с точки зрения процессорного времени.
← →
Василий Жогарев © (2008-07-09 08:09) [3]
procedure TForm1.Button1Click(Sender: TObject);
var
c, i: Integer;
begin
c := ComponentCount;
if c > 0 then
for i := 0 to c - 1 do
if Components[i] is TComboBox then
begin
(Components[i] as TComboBox).ItemIndex := 0;
(Components[i] as TComboBox).Items.Add("1");
end;
end;
Или я тебе не пойму... ?
← →
Muh (2008-07-09 08:14) [4]а где тут задается значение количества комбобохов?
допустим их 25..
почему счет с 0 начинается?
← →
engine © (2008-07-09 08:16) [5]> [4] Muh (09.07.08 08:14)
А справку почитать?
Тебе уже код дали, чего еще надо?
← →
Muh (2008-07-09 08:16) [6]оперативно вы :) щас буду врубаться)
← →
Григорьев Антон © (2008-07-09 08:16) [7]
> Василий Жогарев © (09.07.08 08:09) [3]
А зачем вот это?
>if c > 0 then
> for i := 0 to c - 1 do
for проверяет условие до выполнения итерации цикла, поэтому, если c = 0, цикл и так ни разу не выполнится.
← →
Василий Жогарев © (2008-07-09 08:22) [8]
> Григорьев Антон © (09.07.08 08:16) [7]
Ну а вдруг он пытается это на пустой форме организовать. Мы откуда знаем... ?! ;o)
← →
Muh (2008-07-09 08:30) [9]спасибо огромное врубился)
← →
Григорьев Антон © (2008-07-09 08:32) [10]
> Василий Жогарев © (09.07.08 08:22) [8]
> Ну а вдруг он пытается это на пустой форме организовать.
> Мы откуда знаем... ?! ;o)
На пустой форме ComponentsCount = 0, и тело цикла for не будет ни разу выполнено. Какой смысл заставлять компилятор вставлять ещё одну проверку того, что он и так проверяет?
← →
Василий Жогарев © (2008-07-09 08:44) [11]
> Григорьев Антон © (09.07.08 08:32) [10]
Согласен. Просто привычка всегда все проверять. :o)
← →
Anatoly Podgoretsky © (2008-07-09 10:05) [12]> Василий Жогарев (09.07.2008 8:44:11) [11]
Подобные привычки до добра не доведут.
← →
{RASkov} © (2008-07-09 10:07) [13]> [11] Василий Жогарев © (09.07.08 08:44)
Некоторые привычки вредные :)
← →
KilkennyCat © (2008-07-09 18:00) [14]Это все сестрички - вредные привычки,
А Андрюша не причем!
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.08.10;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.008 c