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

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

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.06.2014, 14:04   #1
Demon315
 
Регистрация: 09.03.2010
Сообщений: 3
По умолчанию Как программно указать номер компонента?

Добрый день. Подскажите пожалуйста, не могу понять, как в программе указать номер компонента. Например, на форме у меня 10 компонентов Panel, то есть Panel1, Panel2, ... , Panel10. В процессе выполнения программы мне нужно менять свойство caption любого из этих компонентов. В программе фигурирует целочисленная переменная n, которая и будет равна номеру компонента. То есть простейшая запись того, о чём я говорю:

Panel(n).Caption:='текст';

Само собой разумеется программа такую запись не примет.
Demon315 вне форума Ответить с цитированием
Старый 25.06.2014, 14:15   #2
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

Код:
if n = 10 then Panel10.Caption := 'sxdvasd';
eval вне форума Ответить с цитированием
Старый 25.06.2014, 14:20   #3
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

используйте свойство Tag компонент.
Человек_Борща вне форума Ответить с цитированием
Старый 25.06.2014, 14:26   #4
Demon315
 
Регистрация: 09.03.2010
Сообщений: 3
По умолчанию

Цитата:
Сообщение от eval Посмотреть сообщение
Код:
if n = 10 then Panel10.Caption := 'sxdvasd';
Спасибо, действительно о таком простом способе я что-то не додумался. Для моей программы этот способ подойдёт. А других способов не существует? Если например в программе будет слишком большое число компонентов, и не выгодно столько же раз прописывать условие if.

Но в любом случае этот вариант меня устроит, ещё раз спасибо.
Demon315 вне форума Ответить с цитированием
Старый 25.06.2014, 14:41   #5
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

других способов куча, начиная от того что предложил Человек_Борща и до всяких реализаций новомодных патернов и т.п. штук-дрюк
eval вне форума Ответить с цитированием
Старый 25.06.2014, 15:48   #6
Toxa
Форумчанин Подтвердите свой е-майл
 
Аватар для Toxa
 
Регистрация: 01.12.2006
Сообщений: 514
По умолчанию

Код:
var
c : tcomponent;
p : tpanel;
i : integer;
begin
i := 10;
c := findcomponent('panel'+inttostr(i));
if assigned(c) then
 p := (c as tpanel);
p.caption := 'this is panel'+inttostr(i);
end;
Пишу на Delphi за еду
Toxa вне форума Ответить с цитированием
Старый 25.06.2014, 17:48   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Как по мне: Загнать все панели в TComponentList и уже к нему обращаться как к массиву.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.06.2014, 09:15   #8
Demon315
 
Регистрация: 09.03.2010
Сообщений: 3
По умолчанию

Toxa, это именно то, что нужно!
Demon315 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как программно сменить иконку в трее компонента TtrayIcon ? zmxncb Компоненты Delphi 3 15.12.2014 03:26
Как программно изменить цвет любого компонента? artemavd Общие вопросы Delphi 11 25.06.2014 12:06
Как программно изменить цвет "компонента"? Смотрим внутри... Vova777 Общие вопросы Delphi 3 15.02.2012 05:56
Как программно запустить событие onClick у компонента?! Ksardas13 C++ Builder 5 09.05.2011 13:08
Как программно удалить компонент от формы или другого компонента (контейнера)? SkAndrew Общие вопросы Delphi 3 27.05.2008 15:20