Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.08.31;
Скачать: CL | DM;

Вниз

компонент внутри компонента...   Найти похожие ветки 

 
self.name   (2008-07-24 23:20) [0]

здравствуйте.
Решил создать свой компонент - наследую 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-24 23:21) [1]

забыл...
AddP вызывает AddPanel и AddRichEdit


 
Virgo_Style ©   (2008-07-24 23:28) [2]

self.name   (24.07.08 23:20)
подскажите, что исправить..


Панель надо создать


 
self.name ©   (2008-07-24 23:31) [3]


> Virgo_Style ©

вот это я прокололся :)
спасибо


 
self.name ©   (2008-07-24 23:36) [4]

не..
сделал

Panel:=TPanel.Create(Self)
with panel do begin
 Parent:=Self;
...

ошибка та же но на первой строчке. а в чём разница между Owner и Parent?


 
self.name ©   (2008-07-24 23:44) [5]

читал справку:)
Owner - отвечает за освобождением компонента,
Parent - содержит компонент..
правильно ли я понял?


 
self.name ©   (2008-07-25 00:18) [6]

не подумал, что Delphi будет обижаться на Panel.
назвал mPanel и всё заработало.
Virgo_Style, спасибо за ответ.


 
Германн ©   (2008-07-25 00:38) [7]


> self.name ©   (25.07.08 00:18) [6]
>
> не подумал, что Delphi будет обижаться на Panel.
> назвал mPanel и всё заработало.
>

Подозрительно. Delphi действительно не должна обижаться на Panel.


 
self.name ©   (2008-07-25 01:38) [8]

но всё же она так делает..
или я что-то напутал, хотя, сомневаюсь.


 
self.name ©   (2008-07-25 01:45) [9]

я щас создаю уже кнопку на панели..но не могу удалить 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, что происходит?
может где-то это описано?


 
Германн ©   (2008-07-25 01:51) [10]


> self.name ©   (25.07.08 01:38) [8]
>
> но всё же она так делает..
> или я что-то напутал, хотя, сомневаюсь.
>

В твоём проекте есть ещё где-нибудь такое имя?


 
self.name ©   (2008-07-25 01:55) [11]

неа, не было. только в обьявлении.
Panel: TPanel;


 
self.name ©   (2008-07-25 02:16) [12]

с caption"ом разобрался, благодаря сообщ Семеныча.
надо было написать
ControlStyle := ControlStyle - [csSetCaption]



Страницы: 1 вся ветка

Текущий архив: 2008.08.31;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.014 c
10-1148641186
Davinchi
2006-05-26 14:59
2008.08.31
Обработчик события OnKeyDown в ActiveFormX не реагирует на ...


8-1184845530
ZMRaven
2007-07-19 15:45
2008.08.31
Захват


2-1216799564
textExpanser
2008-07-23 11:52
2008.08.31
Простая независимая база данных (типа таблицы) для записи в файл


15-1215759791
denic
2008-07-11 11:03
2008.08.31
SharpDevelop 3


8-1185237839
Дмитрий Белькевич
2007-07-24 04:43
2008.08.31
Сглаживание в терминальной сесии.