Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 5 816

/ вопрос решён /

Доброго времени суток, уважаемые эксперты!

Мне необходимо обратиться к компоненту TLabel на форме, компонент создается в Run time и его имя генерируется динамически. Делаю поиск через FindComponent и читаю Caption, но возвращается пустота, при чём если посмотреть через Watch, то Caption содержит значение!

В чём может быть проблема?

Код:

  str1 := TLabel( FindComponent( 'L11_minute' ) ).Caption;

VoVa Вопрос решён, но можно продолжить его обсуждение в мини-форуме

Вопрос задал: 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™

min@y™ (статус: Доктор наук), 15 декабря 2011, 08:16 [#2]:

А зачем к компоненту, созданному в run-time, обращаться по имени? Ведь проще оперировать переменной, которую ты инициализируешь вызовом конструктора.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:43
Выполнено за 0.03 сек.