BlackNightFear
30.11.2004 20:07
Блин, вышибло меня сегодня че-то, как обращаться к компоненту через имя в переменной String?
Помню делал я это недавно тока забыл как и где именно это делал.... НО ПОМНЮ ТОЧНО МОЖНО ТАКОЕ СДЕЛАТЬ!
Тока как?(-:
Например есть несколько компонентов TImage, как через обращаться к любому по имени через строку: "Image1", например? Отличия в именах: Image1, Image2, ..., ImageN
GoodWind
30.11.2004 21:11
тупой метод:
Код
if component_name='image1' then {действия над image1}
BlackNightFear
30.11.2004 22:59
Цитата(GoodWind @ 30.11.04 21:11)
тупой метод:
Код
if component_name='image1' then {действия над image1}
действительно тупой
я имеел ввиду что-то типа такого:
var LabelStringName : String;
LabelStringName := 'Label1';
Form1.(LabelStringName).Caption := 'sdffff';
тока не помню что именно там прописывать
Цитата
тока не помню что именно там прописывать
я тож не помню... сегодня поставлю Дельфи, вечером скажу, если чего надумаю...
ShadowWatcher
1.12.2004 11:02
Я бы делал примерно так:
Код
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;
BlackNightFear Еще вариант
Если предполагаются частые обращения к компонентам подобным образом, то такой подход крайне неэффективен. BlackNightFear, вообще интересно было бы узнать, в каком случае нужно обращаться к компоненту по имени, задаваемому на этапе выполнения?
ShadowWatcher
1.12.2004 11:51
xds, на самом деле примеров можно привести много. Я, например, сталкивался с такой проблемой, когда писал что-то типа HTML-Browser'а со своими скриптами и т. д...
BlackNightFear
3.12.2004 1:31
ShadowWatcher
Спасибо - несказанно помог!
Тока по-моему чтобы найти компонент в классе Form1, то надо код использовать немножко иначе:
(Form1.FindComponent(LabelStringName) As TLabel).Caption := 'sdffff';
В общем спасибо огромное - помог!!;)
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста,
нажмите сюда.