![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Button.Caption и цикл [D7, XP]
Шел мимо решил зайти © (2011-12-21 16:12:00)Доброго времени суток.
Есть такая задача:
Существует некое количество одинаковых кнопок Button1, Button2,Button3 и т.д. необходимо в цикле задать им всем в Caption определенный текст, можно конечно описать каждую кнопку и явно присвоить значение, но можно ли сделать это с помощью цикла.
Шел мимо решил зайти (2011-12-21 16:42:00) [21]Ega23 © (21.12.11 16:38) [4]
спасибо вам за развернутый ответ, пойду крутить код.
Dimka Maslov (2011-12-21 16:42:00) [22]
> Ega23 © (21.12.11 16:38) [4]
А ещё кнопка может быть впудзырена ср-вами вынь-апи. Тогда спасти может только EnumChildWindows
Ega23 (2011-12-21 16:39:00) [23]
> Это не спасёт, если кнопка была создана динамически без
> указания владельца.
Поправка: владелец кнопки не тот контейнер, по которому мы "бежим".
Либо nil, либо ещё что-нибудь, Panel1, например.
Ega23 (2011-12-21 16:38:00) [24]1. Перебираем все компонентыу владельца (например TForm)
for i := 0 to ComponentCount - 1 do
if (Components[i] is TButton) then
TButton(Components[i]).Caption := 'bla-bla-bla';
Это не спасёт, если кнопка была создана динамически без указания владельца.
2. Перебираем все контролыу контейнера, на котором они лежат (например Panel1)
for i := 0 to Panel1.ControlCount - 1 do
if (Panel1.Controls[i] is TButton) then
TButton(Controls[i]).Caption := '1111';
Это переименует все кнопки, которые в данный момент лежат на Panel1, независимо от того, созданы они в динамике или нет.
Но если на Panel1 лежит Panel2, на которой лежат кнопки, то они не будут переименованы.
В этом случае нужен рекурсивный обход.
3. Если нужно некоторыекнопки переименовать (либо некоторые кнопки не переименовывать), то им можно задать TButton.Tag
for i := 0 to ComponentCount - 1 do
if (Components[i] is TButton) and (TButton(Components[i]).Tag = 1) then
TButton(Components[i]).Caption := 'bla-bla-bla';
Как-то так.
Шел мимо решил зайти (2011-12-21 16:29:00) [25]А можно ли мне мааааалюсенький примерчик работы цикла с методом FindControl
Dimka Maslov (2011-12-21 16:19:00) [26]Ни УК, ни КОАП не рассматривают данное деяние как правонарушение. Следовательно — можно. Метод FindControl вам в помощь.
Anatoly Podgoretsky (2011-12-21 16:19:00) [27]> Шел мимо решил зайти (21.12.2011 16:12:00) [0]
Можно