|
Вопрос # 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. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|