🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.delphi
2 messages
2 total messages Started by J-23 Mon, 09 Apr 2018 17:23
Rozszerzenie typu
#346556
Author: J-23
Date: Mon, 09 Apr 2018 17:23
30 lines
1851 bytes
Witam
Mam sobie komponent który posiada własność

  property ProjectDialogAction: TProjectDialogAction
       read FProjectDialogAction write SetProjectDialogAction;

którego to definicja typu wygląda w ten sposob:

type
   TProjectDialogAction = (pdaCreate, pdaEdit, pdaRemove);

nastepnie chce zbudować komponent dziedziczący po tym właśnie co zawiera 
powyższą własność i chce by w komponencie tym dziedziczącym z powyższego 
znajodwała się analogiczna własnosc tylko z rozszerzonym o jeden element 
typerm

type
   TProjectDialogAction = (pdaCreate, pdaEdit, pdaRemove, pdaFile);

i teraz pytanie czy idzie to jakoś ładnie oprogramować w sensie takim 
bym w tym ostatecznym komponencie nie musiał zakładać nowego typu tylko 
go rozszerzyć?

W sumie to jest troche taka fanaberia bo zawsze można napisać prosty 
wrapper i to osiągniąć ale czy jest na to inna metoda?

Oczywiście pytam w konteksice Lazarus :)

Pozdrawiam
J-23
Re: Rozszerzenie typu
#346557
Author: Krzysztof Szyszka
Date: Mon, 09 Apr 2018 18:48
33 lines
2400 bytes
> Mam sobie komponent który posiada własność
>
>   property ProjectDialogAction: TProjectDialogAction
>        read FProjectDialogAction write SetProjectDialogAction;
>
> którego to definicja typu wygląda w ten sposob:
>
> type
>    TProjectDialogAction = (pdaCreate, pdaEdit, pdaRemove);
>
> nastepnie chce zbudować komponent dziedziczący po tym właśnie co zawiera powyższą własność i chce 
> by w komponencie tym dziedziczącym z powyższego znajodwała się analogiczna własnosc tylko z 
> rozszerzonym o jeden element typerm
>
> type
>    TProjectDialogAction = (pdaCreate, pdaEdit, pdaRemove, pdaFile);
>
> i teraz pytanie czy idzie to jakoś ładnie oprogramować w sensie takim bym w tym ostatecznym 
> komponencie nie musiał zakładać nowego typu tylko go rozszerzyć?

Typu wyliczeniowego nie da się rozszerzyć, ale można go przesłonić w drugim
module i to samo dotyczy property ProjectDialogAction. Podstawowe pytanie
jakie należy sobie zadać, to z jakiego poziomu potrzebujesz dostęp do tego
rozszerzonego typu i property. Jeśli tylko z tego nowego modułu (lub innych
które mają go podane w uses) to rób śmiało, ale moduły które mają w uses
tylko moduł podstawowy nie będą widzieć property w rozszerzonej wersji.

-- 
pozdrowienia
Krzysztof Szyszka, X-Files Software
Developer of X-DBGrid Component
Embarcadero Technology Partner
http://www.x-files.pl/
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