Hacker alkatrészek
A VCL-ben egyes komponensek elrejtik szüleik tulajdonságait vagy módszereit: nyilvánvalóan a fejlesztők úgy vélték, hogy ez jobb lenne. A legegyszerűbb példa a DBGrid-rel - egyetlen oszlop magasságát nem lehet programozva módosítani, és néha nagyon kívánatos. Nézzük az összetevő hierarchiáját (1.5. Ábra). Amint látja, a szülők között van a TCustomGrid (az asztal rácsja, ahonnan minden megy), és rendelkezik a RowHeights tulajdonsággal, amely lehetővé teszi bármely sor magasságának megváltoztatását. A leszármazottaknál ez a tulajdonság zárt, de továbbra is fennáll.
Hogyan érhetem el az ingatlant, ha bezárt? Nagyon egyszerű. Szükséges az összetevő hozzárendelése a szülők formájához:
Ebben a példában megváltoztatjuk a DBGrid összetevő első sorának magasságát. Az 1. ábrán. Az 1.6. Ábra mutatja a kód eredményét, és a CD-ROM-on talál egy olyan projektet, amely ilyen egyszerű technikát használ.
Vannak olyan alkalmak, amikor egy komponens magán (vagy védett) tulajdonságait vagy módszereit kell elérni. Elméletileg lehetetlen a zárt dolgok elérése, de ez csak egy ötlet, amely a gyakorlatban könnyen feltörhető
A példában szereplő forráskód a Sources \ ch01 \ HackGrid könyvtár CD-ján található.
Ábra. 1.5. A DBGrid összetevő hierarchiája
Ábra. 1.6. Példa a DBGrid egy sorának magasságának növelésére
Minden, ami a védett szakaszban problémamentesen használható, csak néhány manipuláció végrehajtásával. Például a TButton gombnak van egy védett módja, a Cree-teWnd. Ha közvetlenül megpróbálod hívni, akkor hibát fogsz kapni. Próbáld megpróbálni feltörni ezt az osztályt.
Hozzon létre egy új projektet, és helyezze a forma gomb mostantól a részben típusú modul leírása után az űrlap osztály hozzáadni egy leírást TMyButton osztály, amelyet a leszármazottja a TButton:
Ehhez az osztályhoz nem szükséges tulajdonságok és módszerek. A privát módszerhez a következő sort írhatja:
Szóval, egy barátságos osztályon keresztül hozzáférhettünk a zárt módszerhez, és valószínűleg sok időt mentettünk a szükséges kód újraszövegezésére.
A Borland cég fejlesztõi valamilyen okból zárják le a módszereket. Ha valami zárva van, akkor azt jelenti, hogy más osztályok használata nemkívánatos vagy veszélyes. Ezért nagyon óvatosan kell ezt a módszert használni, és alaposan meg kell vizsgálni a munkaképességre vonatkozó példát.
Az itt vizsgált példa forráskódja a Sources \ chO l \ HackButton könyvtár CD-ján található.