Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.07.2008, 03:01   #1
Air
Участник клуба
 
Аватар для Air
 
Регистрация: 30.04.2007
Сообщений: 1,307
Сообщение Обратиться к классу (Delphi)

Замучился копать 250 тем, так до конца и не дошёл - в праве меня ругать.

А вопрос такой.
- Как обратиться к классу по индексу?

Поясняю.
Есть TCheckBox1 ... TCheckBox24.
Как сделать вот так.

Код:
var i:integer;
     Arr:array[1..24] of boolean;
begin
For i:=1 to 24 do
 Arr[i]:=CheckBox[i].Checked;// порядковый номер задать через переменную
А то ведь писать 24 почти одинаковых строк не разумно...

Заранее благодарю.
Всё гениальное - просто!
Air вне форума Ответить с цитированием
Старый 17.07.2008, 08:20   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну если ты все эти компоненты в массив специально не собирал, то можно просто обратиться к коллекции:
Код:
//********* FOR ******************
for i :=0  to form1.ComponentCount-1  do
begin
 if form1.Components[i] is TButton then
  tbutton(Form1.Components[i]).Caption:='qdasd';
end;
//******* END FOR ****************{}
Здесь в цикле отбираются все Буттоны на форме.

Кстати вместо формы мона применять Панели и прочие контейнеры.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.07.2008, 09:21   #3
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

А я что-то не понял. Сначала говорится о классах.
Цитата:
А вопрос такой.
- Как обратиться к классу по индексу?
Поясняю.
Есть TCheckBox1 ... TCheckBox24.
А в примере речь идет уже о компонетах.
Про классы это шутка такая?
puporev вне форума Ответить с цитированием
Старый 17.07.2008, 09:23   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
А я что-то не понял.
Я как понял автора так и написал, телепатор мой вроде еще в строю )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.07.2008, 09:25   #5
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Извините, я имел ввиду пример автора темы.
Цитата:
For i:=1 to 24 do
Arr[i]:=CheckBox[i].Checked;// порядковый номер задать через переменную
puporev вне форума Ответить с цитированием
Старый 17.07.2008, 10:24   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

puporev, да я понял, эт я так на всякий случай. Помоему автор просто не понял как сформулировать вопрос. )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.07.2008, 12:09   #7
Карась
Участник клуба
 
Аватар для Карась
 
Регистрация: 26.10.2007
Сообщений: 1,244
По умолчанию

Можно решить в лоб.

Создать два массива:

Код:
Mas : Array [1..4] of TCheckBox;
M : Array [1..4] of Boolean;
Один раз заполнить его:

Код:
Mas[1] := CheckBox1;
Mas[2] := CheckBox2;
Mas[3] := CheckBox3;
Mas[4] := CheckBox4;
И в программе обращаться к нему:

Код:
For i := 1 To 4 Do M[i] := Mas[i].Checked;
Умом Россию не понять, пока не выпито ноль пять,
А если выпито ноль пять всё делом кажется не хитрым,
Попытка глубже понимать уже попахивает литром...
Карась вне форума Ответить с цитированием
Старый 17.07.2008, 12:09   #8
Air
Участник клуба
 
Аватар для Air
 
Регистрация: 30.04.2007
Сообщений: 1,307
По умолчанию

puporev Stilet
Верно, я точно не знал как это сказать квалифицированно.
Дык, а разве TCheckBox это не класс,... компонент? ... ошибся, поздно уже было
Всё гениальное - просто!
Air вне форума Ответить с цитированием
Старый 17.07.2008, 12:11   #9
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

TCheckBox - это класс, а CheckBox1:TCheckBox; - это компонент этого класса.
puporev вне форума Ответить с цитированием
Старый 17.07.2008, 12:11   #10
Air
Участник клуба
 
Аватар для Air
 
Регистрация: 30.04.2007
Сообщений: 1,307
По умолчанию

Карась
То же верно, но грузить 24 бокса.... а если в программе их больше?...

puporev
Ясно.

Stilet
Я разграничил Tlabel по двум GroupBox(1 и 2), но имена задались все подряд, как обратиться только к GroupBox1
Всё гениальное - просто!

Последний раз редактировалось Air; 17.07.2008 в 12:14.
Air вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как обратиться к ячейке файла Excel не открывая его Alexandro Microsoft Office Excel 3 28.05.2008 12:02
Как из проги обратиться к Excel ? Drozd Общие вопросы Delphi 3 26.03.2008 18:24
Как обратиться к ячейке таблицы Аналитик Помощь студентам 16 29.11.2007 20:11
как обратиться к невидемой форме Scorpeon Общие вопросы Delphi 3 29.06.2007 16:16
Обратиться к таблице Access Inbox БД в Delphi 8 26.06.2007 11:37