Текущий архив: 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.46 MB
Время: 0.008 c