![]() |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
![]() ![]() |
![]() |
BlackNightFear |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 48 Пол: Мужской Репутация: ![]() ![]() ![]() |
Блин, вышибло меня сегодня че-то, как обращаться к компоненту через имя в переменной String?
Помню делал я это недавно тока забыл как и где именно это делал.... НО ПОМНЮ ТОЧНО МОЖНО ТАКОЕ СДЕЛАТЬ! Тока как?(-: Например есть несколько компонентов TImage, как через обращаться к любому по имени через строку: "Image1", например? Отличия в именах: Image1, Image2, ..., ImageN |
GoodWind |
![]()
Сообщение
#2
|
![]() Автооответчик ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 1 188 Пол: Мужской Реальное имя: Александр Репутация: ![]() ![]() ![]() |
тупой метод:
Код if component_name='image1' then {действия над image1} -------------------- Неадекватная чушь может быть адекватным ответом на неадекватный вопрос. Понятно или разжевать?
|
BlackNightFear |
![]()
Сообщение
#3
|
Новичок ![]() Группа: Пользователи Сообщений: 48 Пол: Мужской Репутация: ![]() ![]() ![]() |
Цитата(GoodWind @ 30.11.04 21:11) тупой метод: Код if component_name='image1' then {действия над image1} действительно тупой ![]() я имеел ввиду что-то типа такого: var LabelStringName : String; LabelStringName := 'Label1'; Form1.(LabelStringName).Caption := 'sdffff'; тока не помню что именно там прописывать |
GoodWind |
![]()
Сообщение
#4
|
![]() Автооответчик ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 1 188 Пол: Мужской Реальное имя: Александр Репутация: ![]() ![]() ![]() |
Цитата тока не помню что именно там прописывать я тож не помню... сегодня поставлю Дельфи, вечером скажу, если чего надумаю... -------------------- Неадекватная чушь может быть адекватным ответом на неадекватный вопрос. Понятно или разжевать?
|
ShadowWatcher |
![]()
Сообщение
#5
|
Новичок ![]() Группа: Пользователи Сообщений: 29 Пол: Мужской Репутация: ![]() ![]() ![]() |
Я бы делал примерно так:
Код Function FindComponent(Root:TComponent;ComponentName:String):TComponent; Var i:Integer; Begin If Root.Name = ComponentName Then Result := Root Else For i:=0 To Root.ComponentsCount - 1 Do Begin Result := FindComponent(Root.Components[i],ComponentName); If Result <> Nil Then Exit End; Result := Nil End; А затем вызов функции типа Код Var LabelStringName : String; Begin LabelStringName := 'Label1'; (FindComponent(Form1,LabelStringName) As TLabel).Caption := 'sdffff'; End; |
volvo |
![]()
Сообщение
#6
|
Гость ![]() |
BlackNightFear
Еще вариант |
xds |
![]()
Сообщение
#7
|
![]() N337 ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 737 Пол: Мужской Репутация: ![]() ![]() ![]() |
Если предполагаются частые обращения к компонентам подобным образом, то такой подход крайне неэффективен. BlackNightFear, вообще интересно было бы узнать, в каком случае нужно обращаться к компоненту по имени, задаваемому на этапе выполнения?
-------------------- The idiots are winning.
|
ShadowWatcher |
![]()
Сообщение
#8
|
Новичок ![]() Группа: Пользователи Сообщений: 29 Пол: Мужской Репутация: ![]() ![]() ![]() |
xds, на самом деле примеров можно привести много. Я, например, сталкивался с такой проблемой, когда писал что-то типа HTML-Browser'а со своими скриптами и т. д...
|
BlackNightFear |
![]()
Сообщение
#9
|
Новичок ![]() Группа: Пользователи Сообщений: 48 Пол: Мужской Репутация: ![]() ![]() ![]() |
ShadowWatcher
Спасибо - несказанно помог! Тока по-моему чтобы найти компонент в классе Form1, то надо код использовать немножко иначе: (Form1.FindComponent(LabelStringName) As TLabel).Caption := 'sdffff'; В общем спасибо огромное - помог!!;) |
![]() ![]() |
![]() |
Текстовая версия | 18.06.2025 20:37 |