Další malý háček

vložil Radek Červinka 19. srpna 2010 22:54

Naši malou galerii háčků (viz tag háček) rozšíříme o další položku. Tentokrát lehce zmátneme IDE a linker. Ale háček se dá použít i jinak. Představme si, že máme instalovanou komponentu a v jednom formuláři ji chceme trochu pozměnit bez toho, aby byla instalována do IDE. Prostě takový malý Cimrmanův úkrok stranou.

Princip budu demonstrovat na implementaci zarovnávání doprava u TEdit. Tato vlastnost je součástí standardního TEdit až od verze Delphi 2009 díky property s názvem TEdit.Aligment s možností (taLeftJustify, taRightJustify, taCenter).

Nevýhodou našeho řešení proti standardnímu je, že platí pro všechny TEdit v rámci formuláře, což někdy vadí a někdy ne, ale jde o princip.

Mějme formulář s jedním TEdit a v něm deklarujme náš háček:

    1type
    2  TEdit = class(StdCtrls.TEdit)
    3  public
    4    { Protected declarations }
    5    procedure CreateParams(var Params: TCreateParams); override;
    6  end;
    7
    8a implementace
    9
   10procedure TEdit.CreateParams(var Params: TCreateParams);
   11begin
   12  inherited;
   13  Params.Style := Params.Style or ES_RIGHT; //zarovnání doprava
   14end;

Všimněte si konstrukce TEdit = class(StdCtrls.TEdit), kdy deklaruji typ se stejným názvem jako TEdit, ale dědím ho z původního TEdit v jednotce StdCtrls. Designer v IDE o tom neví, takže stále používá TEdit, který je instalován v paletě komponent, ale kompilátor, resp. linker správně použije v našem unitu naši variantu TEdit a voalá

TEdit hack


Nabízíme Delphi školení a konzultace na různá témata, primárně ve Vaší firmě.

Tagy: ,

Praxe

Komentáře

20.8.2010 9:21:29 #

JaroB

Tomuhle se obvykle říkávalo injektovaný class nebo taky metoda zakrývání, ne?

JaroB

Komentování ukončeno

Naše nabídka

Partial English version.

MVP
Ing. Radek Červinka - Embarcadero MVP
profil na linkedin, Twitter:@delphicz

Nabízím placené poradenství a konzultace v oblasti programování a vývoje SW.
Dále nabízíme i vývoj speciálního software na zakázku.

Neváhejte nás kontaktovat (i ohledně reklamy nebo burzy práce).

Pokud chcete podpořit tento server libovolnou částkou, můžete použít PayPal. Moc děkuji.

Delphi Certified Developer

O Delphi.cz

Delphi je jediný moderní RAD nástroj podporující tvorbu nativních aplikací pro platformu Win32, Win64 , Mac OSX a na iPhone a Android (s výhledem na další platformy díky FireMonkey) na současném trhu (včetně Windows 8.1).

V současnosti je světová komunita přes dva miliónů vývojářů.

Delphi.cz je nezávislý portál pro uživatele Delphi. Portál není koncipován pro úplné začátečníky, i když i ti se zde nebudou nudit, ale spíše na programátory, kteří již něco znají a chtějí své znalosti dále rozvíjet a sledovat novinky.

Anketa

Poslední komentáře

Comment RSS