🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.delphi
4 messages
4 total messages Started by Marek Thu, 31 May 2018 20:26
Własny komponent: dostęp do kontrolki child-a w publicznych property komponentu rodzica
#346628
Author: Marek
Date: Thu, 31 May 2018 20:26
33 lines
1855 bytes
Witajcie,

tworzę sobie komponent TRichEditEx, który ma w sobie kontrolki, m.in. FRichEdit: TRichEdit,
którego property chciałbym publicznie udostępnić w TRichEditEx.

type
   TMRichEditEx = class(TPanel)
   private
     FRichEdit: TRichEdit;
     //inne kontrolki

   protected
     procedure WMSize(var Msg: TMessage); message WM_SIZE;

   public
     constructor Create(AOwner: TComponent); override;
     destructor Destroy; override;

   published
     property RichEdit: TRichEdit read FRichEdit;

   end;

O ile dla mojego komponentu TMRichEditEx w BDS2006 w Object Inspektorze pojawia się dodatkowa
rozwijalna gałąź kontrolki RichEdit z dostępem do jego property, to w Delphi 2009
jest tylko property, ale bez możliwości rozwinięcia drzewka.

  Da się to jakoś zrobić, żebym mógł wyprowadzić w publicznych property mojego komponentu
TMRichEditEx publiczne property kontrolki FRichEdit?

-- 
Pzdr.
Marek
Re: Własny komponent: dostęp do kontrolki child-a w publicznych property komponentu rodzica
#346629
Author: Krzysztof Szyszka
Date: Fri, 01 Jun 2018 08:09
40 lines
2462 bytes
> Użytkownik "Marek"  napisał w wiadomości grup dyskusyjnych:peplqc$2gv$1@node2.news.atman.pl...
> Witajcie,
>
> tworzę sobie komponent TRichEditEx, który ma w sobie kontrolki, m.in. FRichEdit: TRichEdit,
> którego property chciałbym publicznie udostępnić w TRichEditEx.
>
> type
>    TMRichEditEx = class(TPanel)
>    private
>      FRichEdit: TRichEdit;
>      //inne kontrolki
>
>    protected
>      procedure WMSize(var Msg: TMessage); message WM_SIZE;
>
>    public
>      constructor Create(AOwner: TComponent); override;
>      destructor Destroy; override;
>
>    published
>      property RichEdit: TRichEdit read FRichEdit;
>
>    end;
>
> O ile dla mojego komponentu TMRichEditEx w BDS2006 w Object Inspektorze pojawia się dodatkowa
> rozwijalna gałąź kontrolki RichEdit z dostępem do jego property, to w Delphi 2009
> jest tylko property, ale bez możliwości rozwinięcia drzewka.
>
>   Da się to jakoś zrobić, żebym mógł wyprowadzić w publicznych property mojego komponentu
> TMRichEditEx publiczne property kontrolki FRichEdit?

Pokaż jak tworzysz tego RichEdita. Czy ustawiasz dla niego SetSubComponent?
http://docwiki.embarcadero.com/Libraries/Tokyo/en/System.Classes.TComponent.SetSubComponent

-- 
pozdrowienia
Krzysztof Szyszka, X-Files Software
Developer of X-DBGrid Component
Embarcadero Technology Partner
http://www.x-files.pl/ 
Re: Własny komponent: dostęp do kontrolki child-a w publicznych property komponentu rodzica
#346630
Author: Marek
Date: Fri, 01 Jun 2018 11:07
73 lines
3251 bytes
W dniu 01.06.2018 o 10:09, Krzysztof Szyszka pisze:
>> Użytkownik "Marek"  napisał w wiadomości grup dyskusyjnych:peplqc$2gv$1@node2.news.atman.pl...
>> Witajcie,
>>
>> tworzę sobie komponent TRichEditEx, który ma w sobie kontrolki, m.in. FRichEdit: TRichEdit,
>> którego property chciałbym publicznie udostępnić w TRichEditEx.
>>
>> type
>>    TMRichEditEx = class(TPanel)
>>    private
>>      FRichEdit: TRichEdit;
>>      //inne kontrolki
>>
>>    protected
>>      procedure WMSize(var Msg: TMessage); message WM_SIZE;
>>
>>    public
>>      constructor Create(AOwner: TComponent); override;
>>      destructor Destroy; override;
>>
>>    published
>>      property RichEdit: TRichEdit read FRichEdit;
>>
>>    end;
>>
>> O ile dla mojego komponentu TMRichEditEx w BDS2006 w Object Inspektorze pojawia się dodatkowa
>> rozwijalna gałąź kontrolki RichEdit z dostępem do jego property, to w Delphi 2009
>> jest tylko property, ale bez możliwości rozwinięcia drzewka.
>>
>>   Da się to jakoś zrobić, żebym mógł wyprowadzić w publicznych property mojego komponentu
>> TMRichEditEx publiczne property kontrolki FRichEdit?
> 
> Pokaż jak tworzysz tego RichEdita. Czy ustawiasz dla niego SetSubComponent?
> http://docwiki.embarcadero.com/Libraries/Tokyo/en/System.Classes.TComponent.SetSubComponent
> 

Ustawiam. Tak wygląda konstruktor:

constructor TMRichEdit.Create(AOwner: TComponent);
Begin
   inherited Create(AOwner);

   Width := 250;
   Height := 200;

   BevelOuter := bvNone;
   BorderStyle := bsSingle;
   Ctl3D := false;
   ParentCtl3D := false;

   FRichEdit := TRichEdit.Create(Self);
   FRichEdit.Name := 'RichEdit';
   FRichEdit.Left := 0;
   FRichEdit.Top := 0;
   FRichEdit.Width := 100;
   FRichEdit.Height := 100;
   FRichEdit.BorderStyle := bsNone;
   FRichEdit.ParentFont := true;
   FRichEdit.Parent := Self;

   FRichEdit.SetSubComponent(true);

   FRichEdit.Align := alTop;
   FRichEdit.Height := Height- 40;
   if not (csDesigning in ComponentState) then
     FRichEdit.Lines.Text :='';
End;

Przypuszczam, że to jakaś ułomność Object Inspector-a w Delphi 2009, bo w Delphi 2006 jest OK.

-- 
Pzdr.
Marek
Re: Własny komponent: dostęp do kontrolki child-a w publicznych property komponentu rodzica
#346631
Author: Marek
Date: Fri, 01 Jun 2018 12:12
48 lines
2727 bytes
W dniu 01.06.2018 o 10:09, Krzysztof Szyszka pisze:
>> Użytkownik "Marek"  napisał w wiadomości grup dyskusyjnych:peplqc$2gv$1@node2.news.atman.pl...
>> Witajcie,
>>
>> tworzę sobie komponent TRichEditEx, który ma w sobie kontrolki, m.in. FRichEdit: TRichEdit,
>> którego property chciałbym publicznie udostępnić w TRichEditEx.
>>
>> type
>>    TMRichEditEx = class(TPanel)
>>    private
>>      FRichEdit: TRichEdit;
>>      //inne kontrolki
>>
>>    protected
>>      procedure WMSize(var Msg: TMessage); message WM_SIZE;
>>
>>    public
>>      constructor Create(AOwner: TComponent); override;
>>      destructor Destroy; override;
>>
>>    published
>>      property RichEdit: TRichEdit read FRichEdit;
>>
>>    end;
>>
>> O ile dla mojego komponentu TMRichEditEx w BDS2006 w Object Inspektorze pojawia się dodatkowa
>> rozwijalna gałąź kontrolki RichEdit z dostępem do jego property, to w Delphi 2009
>> jest tylko property, ale bez możliwości rozwinięcia drzewka.
>>
>>   Da się to jakoś zrobić, żebym mógł wyprowadzić w publicznych property mojego komponentu
>> TMRichEditEx publiczne property kontrolki FRichEdit?
> 
> Pokaż jak tworzysz tego RichEdita. Czy ustawiasz dla niego SetSubComponent?
> http://docwiki.embarcadero.com/Libraries/Tokyo/en/System.Classes.TComponent.SetSubComponent
> 

Już wiem, w procedurze "Register" zabrakło rejestracji edytora właściwości sub-komponentu
klasy TRichEdit (RegisterPropertyEditor):

procedure Register;
begin
   RegisterComponents('Moje', [TMRichEdit]);
   RegisterPropertyEditor(TypeInfo(TRichEdit), TMRichEdit,'RichEdit', TClassProperty); //tego brakowało
end;

-- 
Pzdr.
Marek
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads