Grid - Tooltip nad hlavičkou sloupce ?

Třída header nemá vlastnost ToolTipText přesto někteří uživatelé vyžadují tooltipy nad hlavičkou sloupce gridu.
Dnešní článek ukáže jak to zařídit.

Použil jsem způsob , kdy objekt třidy timer testuje objekt pod ukazatelem myši.

Má to dvě výhody:


Vlastní výkonný kód je uložen v události Timer(), pro generování výsledného tolltipu se volá metoda SetToolTip().
Tooltip je zobrazen pomocí dynamického objektu třídy shape (je kompletně průhledný o velikost 3x3 pixely).

Jak to pracuje ?
Timer nejdříve zjistí pomocí funkce SYS(1270) objekt pod ukazatelem myši.
Pokud to není objekt nebo to není objekt třídy column (toto je nejhlouběji uložená třída v gridu, která výše uvedená funkce vrácí), vymaže se interní informace o posledním sloupci, nad kterým se pohybovala myš. Pokud byl již Shape vytvořen, skryje se.

Pak se snaží najít objekt základní třídy header. Pokud ho nenajde, vyskočí ven, jinak pokračuje dál.

Dále se testuje, zda je ukazatel myši na místem, kde je hlavička sloupce. Používá se na to funkce OBJTOCLIENT(). Tato funkce převádí pozici (i velikost) objektu na pozice vůči formuláři. Pro určení pozice myši na formulářem se používají funkce MCOL() a MROW(), kde první parametr je název formuláře a druhý je 3 (vrácená pozice je v pixelech). Pokud je myš mimo hlavičku , objekt Shape se skryje (byl-li) a vymaže s interní link o posledním sloupci.

Pokud je myš nad tím samým místě (v rámci hlavičky), pak se přesune objekt Shape na nové místo a nic více se neděje.

Zapíše se link na aktuální sloupec.

Pokud objekt Shape neexistuje, pak se založí a nastaví se mu průhledný styl.
Následně se mu (Shapeu) nastaví vlastnost ToolTipText pomocí metody SetToolTip(), pozice,velikost a zobrazí se.

Metoda SetToolTip() přebírá parametr, který ukazuje na sloupec pod ukazatelem myši.

Nutné podmínky:

K dispozici je ke stáhnutí program s třídou tmrTipHeader, ukázkovým formulářem a tabulkou.

<< Předchozí díl Následující díl >>