Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.08.10;
Скачать: CL | DM;

Вниз

Как в цикле перебрать допустим 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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.011 c
2-1215507425
maxmic
2008-07-08 12:57
2008.08.10
TListView фокус


15-1214489688
de.
2008-06-26 18:14
2008.08.10
MS SQL 2000


15-1214479595
Галинка
2008-06-26 15:26
2008.08.10
Мысли по поводу структуры XML


6-1191845923
Greench
2007-10-08 16:18
2008.08.10
Интернет-пейджер


9-1173103249
Чайник
2007-03-05 17:00
2008.08.10
OpenGL: вопрос по glReadPixels