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:
type
TEdit = class(StdCtrls.TEdit)
public
{ Protected declarations }
procedure CreateParams(var Params: TCreateParams); override;
end;
a implementace
procedure TEdit.CreateParams(var Params: TCreateParams);
begin
inherited;
Params.Style := Params.Style or ES_RIGHT; //zarovnání doprava
end;
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á
6bba3f64-f9c9-40ce-95e7-f417e121b1c2|5|5.0
Tagy: hacky, VCL
Praxe