Помощь - Поиск - Пользователи - Календарь
Полная версия: Как обратится к компоненте по имени?(-:
Форум «Всё о Паскале» > Delphi, Assembler и другие языки. > Delphi
BlackNightFear
Блин, вышибло меня сегодня че-то, как обращаться к компоненту через имя в переменной String?
Помню делал я это недавно тока забыл как и где именно это делал.... НО ПОМНЮ ТОЧНО МОЖНО ТАКОЕ СДЕЛАТЬ!
Тока как?(-:
Например есть несколько компонентов TImage, как через обращаться к любому по имени через строку: "Image1", например? Отличия в именах: Image1, Image2, ..., ImageN
GoodWind
тупой метод:

Код
if component_name='image1' then {действия над image1}
BlackNightFear
Цитата(GoodWind @ 30.11.04 21:11)
тупой метод:

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

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

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

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

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

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
BlackNightFear
Еще вариант
xds
Если предполагаются частые обращения к компонентам подобным образом, то такой подход крайне неэффективен. BlackNightFear, вообще интересно было бы узнать, в каком случае нужно обращаться к компоненту по имени, задаваемому на этапе выполнения?
ShadowWatcher
xds, на самом деле примеров можно привести много. Я, например, сталкивался с такой проблемой, когда писал что-то типа HTML-Browser'а со своими скриптами и т. д...
BlackNightFear
ShadowWatcher
Спасибо - несказанно помог!
Тока по-моему чтобы найти компонент в классе Form1, то надо код использовать немножко иначе:

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

В общем спасибо огромное - помог!!;)
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.