Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.01.16;
Скачать: CL | DM;

Вниз

Run-time-компонент не хочет определяться...   Найти похожие ветки 

 
Maximus ©   (2003-01-06 21:06) [0]

Видите ли, в моем приложении часть компонентов Run-time, а именно добрая половина всех Label создается после определенного момента. Так вот, после того как они создались, мне с ними надо бы поработать, но… Увы! Прога их не видит!.. Я пытаюсь их так найти:
{Code Begin}
var
I : Integer;
N : String;
begin
for I := 0 to FormMain.ComponentCount - 1 do
if Components[I] is TLabel then
begin
N := Components[I].Name;
ShowMessage(N);
end;
end;
{Code End}
Вижу имена всех лейблок, которые налепил до помпиляции... А тех, что создались попутно - нет!..
Подскажите, ПЛИЗ, что делать?


 
Rouse_ ©   (2003-01-06 21:29) [1]

При динамическом создании ты забыл по видимому присвоить компоненту имя, исправь это.

Желаю успехов


 
Maximus ©   (2003-01-06 23:18) [2]

Нет, я не забыл имя указать. Оно есть, и у всех разное.


 
Song ©   (2003-01-07 09:53) [3]

Видимо когда создавал, не указал AOwner


 
Геннадий ©   (2003-01-07 10:01) [4]

Проверь свойсвто Parent для создаваемых объектов.

(создаём в методе формы)
var
LA : array [1..2] of TLabel;

begin

LA[1]:= TLabel.Create(Self);
LA[1].Parent:= Self;
LA[2]:= TLabel.Create(Self);
LA[2].Parent:= Self;

LA[1].Visible:= True/False;
// ну и так далее...

end;


Удачи!


 
Юрий Зотов ©   (2003-01-07 10:27) [5]

> Геннадий © (07.01.03 10:01)

Sorry, а при чем тут Parent? Вы код в вопросе смотрели? Из него однозначно следует - форма не назначен Owner"ом меток, вот и вся причина. И никакой Parent к ней никакого отношения не имеет.


 
Maximus ©   (2003-01-07 10:27) [6]

У меня есть и Parent и имя, вот:

{Сама процедура}
procedure CreateLabel(AName: String; ACaption: String; ALeft: Integer; ATop: Integer);
var
lTemp: TLabel;
begin
lTemp := TLabel.Create(fMain.bMain);
lTemp.Parent := fMain.bMain; // это TPanel, на котором создается TLabel
lTemp.AutoSize := True;
lTemp.Caption := ACaption;
lTemp.Left := ALeft;
lTemp.Top := ATop;
lTemp.Name := AName;
lTemp.OnClick := fMain.lButtonClick;
end;


{Ее использование}
procedure SetPairsSchedule;
var
I: Integer;
begin
with fMain.FLessonsBase do
begin
for I := 1 to 4 do
begin
CreateLabel("lMon" + IntToStr(I), FAMon[I], 48, 30 + I * 16);
CreateLabel("lTue" + IntToStr(I), FATue[I], 48, 102 + I * 16);
CreateLabel("lWed" + IntToStr(I), FAWed[I], 48, 174 + I * 16);
CreateLabel("lThu" + IntToStr(I), FAThu[I], 224, 30 + I * 16);
CreateLabel("lFri" + IntToStr(I), FAFri[I], 224, 102 + I * 16);
CreateLabel("lSat" + IntToStr(I), FASat[I], 224, 174 + I * 16);
end;
end;
end;


Вот, эта процедура находится в отдельном модуле, все в ней работает все она создает. Но когда готовое приложение уже запущено, то найти созданные этой процедурой лейблы я не могу.
Может у кого есть какие мнения? Просто даже интересно стало, в чем дело? Что я упустил??? всем спасибо заранее!..


 
Юрий Зотов ©   (2003-01-07 10:35) [7]

lTemp := TLabel.Create(fMain.bMain);

Owner"ом метки становится панель bMain и метка попадает имеено в ее список Components. А потом Вы пытаетесь найти ее в списке Components самой формы, где ее, конечно, нет.

Исправьте так, вот и все:
lTemp := TLabel.Create(fMain);



 
Anatoly Podgoretsky ©   (2003-01-07 10:38) [8]

Значит воговиршь владелей fMain.bMain, а ишешь у fMain


 
Maximus ©   (2003-01-07 11:25) [9]

To: Юрий Зотов
Огромное спасибо, Юрий!.. Очень Вам признателен за помощь!!! Благодаря Вам, школа в которой я учусь не останется без программы-напоминалки расписания!.. :))) Спасибо!
Если смогу быть чем-то полезен - пишите: maximus.b@mtu-net.ru



Страницы: 1 вся ветка

Текущий архив: 2003.01.16;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.017 c
3-48893
xenon
2002-12-20 09:54
2003.01.16
Передача параметра в MDIChild


14-49292
Cr@sh
2002-12-27 13:15
2003.01.16
Пищит монитор...


3-48939
Lexa
2002-12-22 04:33
2003.01.16
DBGrid


7-49330
IronWit
2002-11-01 10:26
2003.01.16
работа с trayicon


14-49281
volph7777
2002-12-27 10:42
2003.01.16
Hash-функция