Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.007 c
3-1203925161
Novochek
2008-02-25 10:39
2008.08.10
Не работает ХРАНИМАЯ ПРОЦЕДУРА


15-1214040262
Kostafey
2008-06-21 13:24
2008.08.10
С днем рождения ! 21 июня


15-1214390321
Rox
2008-06-25 14:38
2008.08.10
Сохранение информации


2-1215602817
@!!ex
2008-07-09 15:26
2008.08.10
Как узнать количество экземпляров класса?


11-1185386544
SiNiK
2007-07-25 22:02
2008.08.10
Lazarus+MCK - Ошибка





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский