|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Обращение к элементам формы в цикле
Всем здравствуйте. Есть форма, на ней находится двадцать элементов типа label, с именами label1, label2...label20. При определенном событии, допустим при нажатии на кнопку в каждом лейбе нужно вывести одинаковый текст. Вопрос, есть ли возможность обойтись от такого подхода
label1.caption='text; label2.caption:='text'; ... и написать какой-нибудь цикл, что-нить типо while (x<=20) do labelx.caption='text'; |
#2
|
|||
|
|||
А вот... заработало вот так.
создаем массив указателей: pLabels: array[1..20] of ^TLabel; Потом инициализируем их: pLabels[1] := @label1; pLabels[2] := @label2; ... pLabels[20] := @label20; А потом уже в цикле обращаемся for i:=1 to 20 do plabels[i]^.Caption:='text'; Изврат? Или нормально? |
#3
|
||||
|
||||
Код:
procedure TForm1.Button1Click(Sender: TObject); var i:integer; begin for i:=0 to ComponentCount-1 do // перебираем все компоненты на форме if Components[i] is TLabel // ищем нужные компоненты (TLabel) then TLabel(Components[i]).Caption:='text'; // выполняем действие с компонентом (присваев текст) end; Поживу - увижу, Доживу - узнаю, Выживу - учту. [P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
Последний раз редактировалось Yurk@, 08.11.2009 в 21:25. |
#4
|
|||
|
|||
Вот, этот вариант приятнее. Спасибо
|