Masterfield

A Masterfield Oktatóközpont szakmai blogja. Minden, ami a tanfolyamokról kimaradt

Friss topikok

  • gyuria: Na végre, már nagyon vártam Már annyi téma összejött, hogy egy jó darabig biztos kitart :) (2008.10.24. 08:04) Elindultunk

Linkblog

Protected metódusok elérése kívülről Delphi-ben

2008.10.15. 17:04 | gyuria | Szólj hozzá!

Címkék: protected tulajdonság delphi pascal attribútum metódus

Ma megint alkalmaznom kellett egy apró trükköt és eszembe jutott, hogy talán ki lehetne tenni a blogra, mert nem biztos, hogy mindenki ismeri.

Bizonyos esetekben - főleg, ha általánosan kezelünk objektumokat, jó lenne protected metódusokat vagy attribútumokat elérni az osztályon kívülről. Protected metódusok Delphi-ben alapesetben elérhetők az osztályban és a leszármazottakban. Ha ez nem elég, akkor létre kell hoznunk egy leszármazottat az elérni kívánt osztályból és arra cast-olni a megfelelő objektumot.

Tegyük fel, hogy egy TControl objektumnak szeretnénk elérni a Font tulajdonságát.

procedure ShowFontName( ctrl : TControl );

begin

  ShowMessage( ctrl.Font.Name );

end;

Ez hibát fog eredményezni, mert a Font protected tulajdonság. A trükk egyszerű:

type TControlAccess = class( TControl );

procedure ShowFontName( ctrl : TControl );

begin

  ShowMessage( TControlAccess( ctrl ).Font.Name );

end;

Ez már így menni fog. Feltétele a dolognak, hogy a TControlAccess osztály definíciójának ugyanabban a unit-ban kell lennie, mint ahol használni akarjuk (nem elég egy uses a tartalmazó unit-ra).

Saját osztályoknál erre az egyszerű trükkre nem nagyon lehet szükségünk, mert nyilván úgy módosítjuk az osztályt, hogy elérjük a metódust vagy attribútumot. Viszont, ha pl. a VCL könyvtár osztályait akarjuk elérni, akkor hasznos lehet.

A bejegyzés trackback címe:

https://masterfield.blog.hu/api/trackback/id/tr59745814

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.
süti beállítások módosítása