| 
| 
 | Вопрос # 5 816/ вопрос решён / | 
 |  Доброго времени суток, уважаемые эксперты!
 Мне необходимо обратиться к компоненту TLabel на форме, компонент создается в Run time и его имя генерируется динамически. Делаю поиск через FindComponent и читаю Caption, но возвращается пустота, при чём если посмотреть через Watch, то Caption содержит значение!
 
 В чём может быть проблема?
 
 Код:
 
   str1 := TLabel( FindComponent( 'L11_minute' ) ).Caption; 
|  |   Вопрос задал: VoVa (статус: Посетитель)Вопрос отправлен: 14 декабря 2011, 17:27
 Состояние вопроса: решён, ответов: 1.
 |  Ответ #1. Отвечает эксперт: Пупкин В В Здравствуйте, VoVa!набросал погуглив 3мин47сек
 procedure TForm1.Button1Click(Sender: TObject);//создаем лебл
 var
 t:TLabel;
 begin
 t := TLabel.Create( self );
 t.Parent:=Form1;
 t.Name := 'L11_minute';
 t.Caption:= 'надпись =)';
 end;
 
 procedure TForm1.Button2Click(Sender: TObject);//выводим каптчион
 var
 Obj : TObject;
 E : TLabel;
 i : integer;
 begin
 for i := 0 to Application.ComponentCount - 1 do
 if Application.Components[i] is TForm then
 with Application.Components[i] as TForm do
 begin
 Obj := Application.Components[i].FindComponent('L11_minute');
 if Obj is TLabel then
 begin
 E := (Obj as TLabel);
 messagedlg(E.caption,mtInformation,[mbOK],0);
 end;
 end;
 end;
 
|  | Ответ отправил: Пупкин В В (статус: 2-ой класс)Время отправки: 14 декабря 2011, 17:57
 Оценка за ответ: 5
 Комментарий к оценке: Спасибо за потраченное на меня время :-)
 оказалось что успех даёт
 s2 := TLabel(Self.FindComponent( 'L11_minute' )).Caption;
 
 т.е. разница всего лишь в Self
 |  
 Мини-форум вопросаВсего сообщений: 2; последнее сообщение — 15 декабря 2011, 08:16; участников в обсуждении: 2. 
|   | Пупкин В В (статус: 2-ой класс), 14 декабря 2011, 17:59 [#1]:наверно можно проще, но эт первое что гуглеж дал, а разбираться лениво |  14 декабря 2011, 20:23: Статус вопроса изменён на решённый (изменил модератор Ерёмин А.А.) 
|   | min@y™ (статус: Доктор наук), 15 декабря 2011, 08:16 [#2]:А зачем к компоненту, созданному в run-time, обращаться по имени? Ведь проще оперировать переменной, которую ты инициализируешь вызовом конструктора. Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |