![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как подменить объект на форме?
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));