![]() |
|
|
Регистрация | << Правила форума >> | 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
|
||||
|
||||
![]() Цитата:
|