Componente de hacking

În unele componente VCL ascunde proprietăți sau metode ale părinților lor: aparent, dezvoltatorii au considerat că ar fi mai bine. Cel mai simplu exemplu cu DBGrid - nu putem schimba programabil o înălțime a unei singure coloane și, uneori, este foarte de dorit. Să analizăm ierarhia componentei (Figura 1.5). După cum puteți vedea, printre părinții au TCustomGrid (net al mesei din care totul vine), și are proprietăți RowHeights, permițându-vă să modificați înălțimea orice rând. La descendenți, această proprietate este închisă, dar rămâne.







Cum pot accesa proprietatea dacă este închisă? Este foarte simplu. Este necesar să se aducă componenta în forma părintească:

În acest exemplu, modificăm înălțimea primului rând al componentei DBGrid. În Fig. 1.6 arată rezultatul codului, iar pe CD-ROM, puteți găsi un proiect care utilizează o tehnică simplă.

Există momente când trebuie să accesați proprietăți private (sau protejate) sau metode ale unei componente. În teorie, este imposibil să accesezi lucruri închise, dar aceasta este doar o idee care, în practică, este ușor de hacked

Codul sursă al exemplului examinat aici este pe CD-ul din directorul Sources \ ch01 \ HackGrid.







Componente de hacking

Fig. 1.5. Ierarhia componentei DBGrid

Componente de hacking

Fig. 1.6. Exemplu de creștere a înălțimii unui singur rând în DBGrid

Tot ce este în secțiunea protejată poate fi folosit fără probleme, făcând doar câteva manipulări. De exemplu, butonul TButton are o metodă protejată numită Cree-tewn. Dacă încercați să o apelați direct, veți primi o eroare. Să încercăm să spargem această clasă.

Creați un nou proiect și puneți un buton în formularul Acum, în secțiunea de tip a modulului, după descrierea clasei de formă, adăugați o descriere a clasei TMyButton, care va fi descendent al TButton:

Nu sunt necesare proprietăți și metode pentru această clasă. Acum puteți accesa metoda privată scriind următoarea linie:

Și astfel, printr-o clasă prietenoasă, avem acces la o metodă privată și poate fi salvat o mulțime de timp copiind codul necesar pe care tocmai a fost închis.

Dezvoltatorii companiei Borland metode apropiate pentru un motiv. Dacă ceva a fost închis, înseamnă că folosirea din alte clase este nedorită sau chiar periculoasă. Iată de ce este necesar să folosiți această metodă foarte atent și după ce ați utilizat cu grijă exemplul privind capacitatea de lucru.

Codul sursă al exemplului examinat aici este pe CD-ul din directorul Sources \ chO l \ HackButton.







Articole similare

Trimiteți-le prietenilor: