Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как подменить объект на форме?


ZHK ©   (2004-06-30 11:06:00) 

Не знаю, насколько я прав, но хочется. Я добавил в стандартный объект несколько своих методов. Вот так:
 TClearedTextListBox=class(TTextListBox)
   function AddDialogItem(Name:String;LibHandle:Integer=-1;DialogIndex:Integer=-1):Integer;
   function LibraryHandle(Index:Integer):Integer;
   function DialogIndex(Index:Integer):Integer;
   procedure Clear; override;
 end;


Затем положил родителя на форму, а FormCreate написал такой код:
 TextListBox1.Free;
 TextListBox1:=TClearedTextListBox.CreateParented(GroupBox2.Handle);
 TextListBox1.OnClick:=TextListBox1Click;
 TextListBox1.OnDblClick:=TextListBox1DblClick;
 TextListBox1.Align:=alClient;
 TextListBox1.Visible:=True;

Желая тем самым, чтобы объект с тем же имененем, но расширенными свойствами развернулся внутри GroupBox2. В чем я не прав?


Sandman25   (2004-06-30 12:01:00) [1]

[5] ZHK ©   (30.06.04 11:52)

Обычно наследника все-таки регистрируют, инсталлируют в IDE и кладут на форму.


ZHK   (2004-06-30 11:52:00) [2]

А еще как-нибудь можно подменить объект на форме? Скажем в процессе компиляции, если его не регистрировать?


Sandman25   (2004-06-30 11:30:00) [3]

CreateParented не вызыает InsertControl, потому как Parent не обязан являться VCL-окном. См. справку по CreateParented


ZHK   (2004-06-30 11:20:00) [4]


> GroupBox2.InsertControl(TControl(TextListBox1));
>
> заменяется на
> TextListBox1.Parent := GroupBox2

А почему тогда не работает CreateParented? Ведь это, по идее, тоже самое?


Sandman25   (2004-06-30 11:18:00) [5]

GroupBox2.InsertControl(TControl(TextListBox1));

заменяется на
TextListBox1.Parent := GroupBox2


ZHK   (2004-06-30 11:16:00) [6]

А получилось вот так:
 TextListBox1.Free;
 TextListBox1:=TClearedTextListBox.Create(GroupBox2);
 TextListBox1.OnClick:=TextListBox1Click;
 TextListBox1.OnDblClick:=TextListBox1DblClick;
 TextListBox1.Align:=alClient;
 TextListBox1.Visible:=True;
 GroupBox2.InsertControl(TControl(TextListBox1));


Наверх

Титульная страница Поиск, карта сайта Написать письмо