![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
компонент внутри компонента... [D2005]
self.name © (2008-07-24 23:20:00)здравствуйте.
Решил создать свой компонент - наследую TScrollBox.
Нужно в нём создавать TPanel'и с TRichEdit'ами. Для этого добавил процедуру AddP.
код:
unit oOtvets;
interface
uses...
var
Panel: TPanel;
...
private
procedure AddPanel;
...
procedure ToOtvets.AddPanel;
begin
with panel do begin
Parent:=Self;
hide;
Left := HSpace;
Top := VSpace+(FVariantCount-1)*PanelHeight - Self.VertScrollBar.ScrollPos;
Width := Self.Width-2*HSpace;
Height := PanelHeight;
TabStop := False;
name:='otv_pnl_'+inttostr(FVariantCount);
end;
end;
вылезает ошибка:
project comp_testing.exe raised exception class EAccessViolation with message 'Access violation at adress 004C9F2A in module 'comp_testing.exe'. Read of address 00000000'.
в точке:
Parent:=Self;
подскажите, что исправить..
self.name (2008-07-25 02:16:00) [1]с caption'ом разобрался, благодаря сообщ Семеныча.
надо было написать
ControlStyle := ControlStyle - [csSetCaption]
self.name (2008-07-25 01:55:00) [2]неа, не было. только в обьявлении.
Panel: TPanel;
Германн (2008-07-25 01:51:00) [3]
> self.name © (25.07.08 01:38) [8]
>
> но всё же она так делает..
> или я что-то напутал, хотя, сомневаюсь.
>
В твоём проекте есть ещё где-нибудь такое имя?
self.name (2008-07-25 01:45:00) [4]я щас создаю уже кнопку на панели..но не могу удалить caption. делаю:
procedure ToOtvets.AddButton;
begin
mButton:=TButton.Create(FindComponent('otv_pnl_'+IntToStr(FVariantCount)));
with mButton do begin
Parent:=mpanel;
Left := HSpace;
top:=VSpace;
Width := ButtonWidth;
Height := parent.ClientHeight-2*VSpace;
TabStop := True;
TabOrder := FVariantCount-1;
name:='otv_btn_'+inttostr(FVariantCount);
end;
(FindComponent('otv_btn_'+IntToStr(FVariantCount)) as TsButton).caption:='';
end;
а caption так и остается равным name.
пользуясь случаем хотел бы спросить - как правильно писать, через FindComponent или mPanel? и когда я создаю еще одну mPanel, что происходит?
может где-то это описано?
self.name (2008-07-25 01:38:00) [5]но всё же она так делает..
или я что-то напутал, хотя, сомневаюсь.
Германн (2008-07-25 00:38:00) [6]
> self.name © (25.07.08 00:18) [6]
>
> не подумал, что Delphi будет обижаться на Panel.
> назвал mPanel и всё заработало.
>
Подозрительно. Delphi действительно не должна обижаться на Panel.
self.name (2008-07-25 00:18:00) [7]не подумал, что Delphi будет обижаться на Panel.
назвал mPanel и всё заработало.
Virgo_Style, спасибо за ответ.
self.name (2008-07-24 23:44:00) [8]читал справку:)
Owner - отвечает за освобождением компонента,
Parent - содержит компонент..
правильно ли я понял?
self.name (2008-07-24 23:36:00) [9]не..
сделал
Panel:=TPanel.Create(Self)
with panel do begin
Parent:=Self;
...
ошибка та же но на первой строчке. а в чём разница между Owner и Parent?
self.name (2008-07-24 23:31:00) [10]
> Virgo_Style ©
вот это я прокололся :)
спасибо
Virgo_Style (2008-07-24 23:28:00) [11]self.name (24.07.08 23:20)
подскажите, что исправить..
Панель надо создать
self.name (2008-07-24 23:21:00) [12]забыл...
AddP вызывает AddPanel и AddRichEdit