|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#16
|
|||
|
|||
Цитата:
Цитата:
|
#17
|
|||
|
|||
пробовал при создании явно указывать простейшее имя Test чтобы уж явно без ошибок, результат NIL
|
#18
|
|||
|
|||
Ну показывайте весь код тогда снова.
|
#19
|
|||
|
|||
создаем, тут все нормально. Компонент появляется
Код:
procedure TForm1.CreateLabel(X : Integer); var l : TLabel; begin while X > 0 do begin l := TLabel.Create(Self); l.Name := 'test'; l.Left := 50; l.Top := X * 50; l.Parent := Text.Panel1; Dec(X); end; end; Код:
CreateLabel(1); Text.Visible := true; l := TLabel(Text.FindComponent('test')); if l <> nil then begin l.Caption := predmet; l.Left := (Text.Panel1.Width - l.Width)Div 2; end; |
#20
|
|||
|
|||
Код:
while X > 0 do begin l := TLabel.Create(Text); |
#21
|
|||
|
|||
есть, заработало. Я пока мало в этом понимаю но чтоб на будущее, что именно мы переделали ?
|
#22
|
|||
|
|||
Create - это конструктор. В качестве параметра для большинства компонентов VCL ему передается указатель на владельца. Владелец отвечает за:
1) Освобождение памяти, распределенной под компоненты, которыми он владеет. Происходит это при уничтожении самого владельца; 2) Загрузку и сохранение компонентов. Когда в IDE вы создаете форму, а потом в программе обращаетесь к ней, именно владелец сохраняет и загружает компоненты на форме в том виде, в котором вы их создали. Обычно владельцем выступает всегда форма. Здесь вы используете TFrame; на вышеуказанную функциональность не влияет, кто будет владельцем - форма или TFrame, но вот поиск компонента должен осуществлять его владелец. Т.е. вызывать нужно метод FindComponent того, кто указан внутри вызова Create(...) Имеено это я и сделал - заменил владельца. А можно было убрать "Text." из вызова "Text.FindComponent", результат получился бы тот же. |