Форум: "Основная";
Текущий архив: 2004.05.16;
Скачать: [xml.tar.bz2];
ВнизКак обоити в цикле несколько компанентов? Найти похожие ветки
← →
student87 (2004-05-01 19:52) [0]Есть на форме 84 Button"a. Задача состоит в том, чтобы обойти в цикле их все и сменить значения caption.
← →
Palladin © (2004-05-01 20:02) [1]TComponent.ComponentCount,TComponent.Components[],is/as,=,if then else
думаю достаточно...
ах да :) for to/downto do
← →
student87 (2004-05-01 20:40) [2]Удалено модератором
← →
Palladin © (2004-05-01 21:01) [3]Удалено модератором
← →
Jack128 © (2004-05-01 21:22) [4]Удалено модератором
← →
Урод (2004-05-01 21:40) [5]Удалено модератором
← →
Marser © (2004-05-01 21:44) [6]Удалено модератором
← →
Урод (2004-05-01 21:49) [7]Удалено модератором
← →
Урод (2004-05-01 23:24) [8]Может это можно сделать по другому. В чем смысл задачи
← →
European (2004-05-01 23:35) [9]Что-то вроде этого:
for i:= 1 to 84 do
begin
TButton(FindComponent("Button" + IntToStr(i))).Caption:=IntToStr(i);
end;
← →
MeF88 © (2004-05-02 06:33) [10]
> Задача состоит в том, чтобы обойти в цикле их все и сменить
> значения caption
А зачем так много??? (я понимаю, что праздники, но всё же...)
> for i:= 1 to 84 do
> begin
> TButton(FindComponent("Button" + IntToStr(i))).Caption:=IntToStr(i);
> end;
А не быстрее ли сделать
for i:=1 to ComponentCount do begin
if(Components[i].Name="Button"+IntToStr(i)) then begin
TButton(Components[i]).Caption:=IntToStr(i);
end;
end;
← →
mfender © (2004-05-02 06:54) [11]
> А зачем так много??? (я понимаю, что праздники, но всё же...)
Очень тонкий ход: пока пользователь сидит и разбирается в пресловутых батонах, проходит как минимум минута. Он находит требующую нажатия кнопку, и в этот момент по таймеру меняются на них всех надписи :) Вот где замысел-то! А число "84" - чистой воды кабалистика. Это к нумерологам. Был тут один такой :)
← →
student87 (2004-05-02 09:57) [12]> European (01.05.04 23:35) [9]
Спасибо, помог.
← →
student87 (2004-05-02 10:01) [13]Другой вопрос: нужно присвоить всем Button"ам примерно одинаковый обработчик нажатия, но передавать имя нажатой кнопки?
← →
Юрий Зотов © (2004-05-02 10:13) [14]> student87 (02.05.04 10:01) [13]
Параметр Sender в обработчике события - это тот объект, который возбудил событие. В Вашем случае - нажатая кнопка. Никакого имени передавать не надо.
← →
student87 (2004-05-02 10:18) [15]> Юрий Зотов © (02.05.04 10:13) [14]
спасибо за Sender.
Еще один ламерский вопрос: как присвоить один обработчик события многим объектам?
← →
Юрий Зотов © (2004-05-02 10:36) [16]1. Выделить на форме все эти объекты (мышкой, удерживая Shift).
2. В Object Inspector"е назначить общий обработчик.
← →
Ihor Osov'yak © (2004-05-02 10:44) [17]2 [15]
С помощью оператора присваивания. Если в рантайме. Можно и в цыкле..
Только я бы вместо использования анализа name компонента (см [9], [10]) посоветовал-бы использовать className, так как в общем случае name может быть любым. У меня, например, ни один буттон в своем имени не имеет подстроки "Button"
Испоользуя инспектор обьектов, если в дизайн-тайме. Для удобства можно использовать групповую отметку компонентов.
Зы. Блин, может наконец книги почитать, и тетю соображаловку на помощь позвать? Cорри, не удержался.. См. http://delphimaster.net/view/15-1083382635/
← →
Anatoly Podgoretsky © (2004-05-02 11:43) [18]mfender © (02.05.04 06:54) [11]
Не кабалистика, клавиатура 83/84 клавиши.
student87 (02.05.04 10:18) [15]
Пора что ни будь почитать, при том не по Дельфи
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.05.16;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.036 c