![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Доброго всем здравия
Требуется динамически создать несколько компонентов и объединить их в массив. В книгах и интернете нашел всё, что для этого необходимо сделать. НО.... (куда без него) вот здесь увидел такой код Код:
pn := TPanel.Create(nil); |
|
#2
|
||||
|
||||
|
у такого компонента владельца нет, соответственно его нужно удалять вручную. но если у нее есть родитель, то он ее удалит.
Последний раз редактировалось NumLock, 16.08.2012 в 10:54. |
|
#3
|
|||
|
|||
|
А назначить владельца после создания компонента возможно?
|
|
#4
|
||||
|
||||
|
нет. Owner только для чтения.
|
| Этот пользователь сказал Спасибо NumLock за это полезное сообщение: | ||
Alexs55 (16.08.2012)
| ||
|
#5
|
||||
|
||||
|
Цитата:
Код:
Application.InsertComponent(pn); // или так Form1.InsertComponent(pn); |
|
#6
|
||||
|
||||
|
Цитата:
|
|
#7
|
||||
|
||||
|
Цитата:
|
|
#8
|
||||
|
||||
|
Вообще-то InsertComponent проверяет наличие владельца.
|
|
#9
|
|||
|
|||
|
Спасибо за разъяснения. Осталась пару вопросов по данной теме. Так сказать "для повышения образованности" (почтальон Печкин). Без ответа жить буду, но всётаки..
1. Зачем нужны компоненты без владельца. 2. На форумах многие предлагают такой вариант: Код:
pn := TPanel.Create(self); Код:
pn := TPanel.Create(nil); |
|
#10
|
||||
|
||||
|
1. Невизуальным компонентам владелец не обязателен. Я, например, частенько TADOQuery создаю внутри фуункций для того чтобы заврос к БД делать.
2. Self - это не панель, это компонент внутри метода которого ты описываешь создание панели. Это корректно. |
|
#11
|
|||
|
|||
|
Прошу прощенья, вопрос криво задал (за мной такое водится). Ну и получил.... Попробую по другому задать вопрос:
2. Если компонент создан ... .Create(self);, то кто будет являться его владельцем? |
|
#12
|
||||
|
||||
|
Цитата:
Код:
procedure TForm1.Button1Click(Sender: TObject); var pn, pn2, pn3: TPanel; begin pn:=TPanel.Create(nil); pn2:=TPanel.Create(nil); pn3:=TPanel.Create(nil); pn2.InsertComponent(pn); pn3.InsertComponent(pn); pn2.Free; pn3.Free; end; |
|
#13
|
||||
|
||||
|
Цитата:
|
|
#14
|
||||
|
||||
|
ну только Self ссылка на объект в методе которого он используется. это не только к компонентам применимо. а InsertComponent действительно не нужен, иначе я бы про него не забыл)))
|
|
#15
|
||||
|
||||
|
Цитата:
|