IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> Как обратится к компоненте по имени?(-:
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 48
Пол: Мужской

Репутация: -  0  +


Блин, вышибло меня сегодня че-то, как обращаться к компоненту через имя в переменной String?
Помню делал я это недавно тока забыл как и где именно это делал.... НО ПОМНЮ ТОЧНО МОЖНО ТАКОЕ СДЕЛАТЬ!
Тока как?(-:
Например есть несколько компонентов TImage, как через обращаться к любому по имени через строку: "Image1", например? Отличия в именах: Image1, Image2, ..., ImageN
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Автооответчик
*****

Группа: Пользователи
Сообщений: 1 188
Пол: Мужской
Реальное имя: Александр

Репутация: -  16  +


тупой метод:

Код
if component_name='image1' then {действия над image1}


--------------------
Неадекватная чушь может быть адекватным ответом на неадекватный вопрос. Понятно или разжевать?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 48
Пол: Мужской

Репутация: -  0  +


Цитата(GoodWind @ 30.11.04 21:11)
тупой метод:

Код
if component_name='image1' then {действия над image1}

действительно тупой lol.gif
я имеел ввиду что-то типа такого:

var LabelStringName : String;
LabelStringName := 'Label1';
Form1.(LabelStringName).Caption := 'sdffff';

тока не помню что именно там прописывать
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Автооответчик
*****

Группа: Пользователи
Сообщений: 1 188
Пол: Мужской
Реальное имя: Александр

Репутация: -  16  +


Цитата
тока не помню что именно там прописывать

я тож не помню... сегодня поставлю Дельфи, вечером скажу, если чего надумаю...


--------------------
Неадекватная чушь может быть адекватным ответом на неадекватный вопрос. Понятно или разжевать?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 29
Пол: Мужской

Репутация: -  -1  +


Я бы делал примерно так:
Код

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;
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






BlackNightFear
Еще вариант
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


N337
****

Группа: Пользователи
Сообщений: 737
Пол: Мужской

Репутация: -  26  +


Если предполагаются частые обращения к компонентам подобным образом, то такой подход крайне неэффективен. BlackNightFear, вообще интересно было бы узнать, в каком случае нужно обращаться к компоненту по имени, задаваемому на этапе выполнения?


--------------------
The idiots are winning.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Новичок
*

Группа: Пользователи
Сообщений: 29
Пол: Мужской

Репутация: -  -1  +


xds, на самом деле примеров можно привести много. Я, например, сталкивался с такой проблемой, когда писал что-то типа HTML-Browser'а со своими скриптами и т. д...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Новичок
*

Группа: Пользователи
Сообщений: 48
Пол: Мужской

Репутация: -  0  +


ShadowWatcher
Спасибо - несказанно помог!
Тока по-моему чтобы найти компонент в классе Form1, то надо код использовать немножко иначе:

(Form1.FindComponent(LabelStringName) As TLabel).Caption := 'sdffff';

В общем спасибо огромное - помог!!;)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 15.05.2024 10:09
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name