Delphi - A Form-on lévő komponensek Hint-jének egyidejű megjelenítése

forráskód letöltése
Tegyük fel, hogy szeretnénk egy olyan funkciót az alkalmazásunkba, hogy egy időre megjelenik az összes komponenshez tartozó súgó szöveg (Hint) ablaka.
Ezáltal a felhasználó egyszerre végig tudja nézni, hogy melyik objektum mire is való az adott Form-on.

Mellékelt példában erre keresünk megoldást. Tegyük fel, hogy szeretnénk egy olyan funkciót az alkalmazásunkba, hogy egy időre megjelenik az összes komponenshez tartozó súgó szöveg (Hint) ablaka.
Ezáltal a felhasználó egyszerre végig tudja nézni, hogy melyik objektum mire is való az adott Form-on.

Mellékelt példában erre keresünk megoldást.


Hogy egyidőben láthassuk az összes komponensnél a Hint ablakát, ahhoz szükségünk lesz annyi THintWindow típusú objektumra, ahány komponensünk van.

A THintWindow osztály képes arra, hogy egy-egy komponens Hint property-ben tárolt sztringet megjelenítsen egy adott pozíción.

Ezeket a Hint ablakokat a program indulásakor, az OnCreate eseménynél hozzuk létre.

Tároláshoz egy TList osztályt használunk fel, mely az Items tömbjében képes egy-egy mutatót tárolni minden egyes létrehozott objektumra, így a későbbiek folyamán az összest elérhetjük majd.

Még mielőtt elfelejtenénk megszüntetni a létrehozott objektumokat, gyorsan elkészítjük ezt a rutint is a Form OnDestroy eseményénél.

Amikor arra a gombra kattint a felhasználó, hogy "Hint megjelenítése", akkor egy ciklus segítségével végigmegyünk a Form összes komponensén és egy általunk írt ShowHint eljárás segítségével minden egyes komponenshez megjelenítjük a saját súgó ablakát.

A ShowHint-en belül először is meghatározzuk a komponens jobb felső sarkának a koordinátáját. Minden egyes ablakot ide fogunk pozícionálni.

Ezek után az ActivateHint hívásával megjelenítjük az ablakot.


Az ablakok elrejtése szintén egy ciklussal történik, mely az összes komponenshez tartozó Hint ablaknál meghívja a ReleaseHandle eljárást, és ezzel eltünteti a képernyőről a sok kis súgó szöveg ablakot.