Grid - Zjištění ControlSource aktivního sloupce

Někdy je potřeba zjistit ControlSource aktivního sloupce gridu pro vytvoření filtru (má to třeba MS Access).
Dnešní článek ukáže jak to zařídit.

Prochází se seznam Columns a testuje se vlastnost ColumnOrder každého sloupce s vlastností ActiveColumn gridu. Pokud jsou hodnoty obou vlastností shodné, pak se jedná o aktivní sloupec.
Pak se z vlastnosti ControlSource převezme její obsah a provede náhrada Thisform a Thisformset za obsah vlastností Thisform.Name a Thisformset.Name .

Pozor:

Zdrojový kód:

* loGrid je odkaz na objekt gridu
* lcCS bude buď prázdné, nebo bude obsahovat obsah ControlSource
LOCAL lii,lcCS
lcCS=''
WITH loGrid
* Projdu všechny sloupce abych identifikoval ten správný (kvůli zdroji dat)
* Pak z něho vytáhnu potřebné informace a postavím filtr
FOR lii=1 TO .ColumnCount
    IF .Columns(lii).ColumnOrder#.ActiveColumn && Toto není aktivní sloupec
       LOOP && Pak jdi na další
    ENDIF
    * Našel jsem aktivní sloupec
    * Vezmu zdroj dat
    lcCS=STRTRAN(STRTRAN(NORMALIZE(.Columns(lii).ControlSource),;
                 NORMALIZE("Thisform"),Thisform.Name),;
                 NORMALIZE("Thisformset"),Thisformset.Name)
    EXIT && Ukonči smyčku
NEXT
ENDWITH

Poznámky:
Pozn. *): Když je buňka aktivní, pak se This vyhodnocuje na úrovni aktivního objektu sloupce (CurrentControl), jinak na úrovni celého gridu.

Slovník:
ActiveColumn Vlastnost na gridu určující aktivní sloupec.
ColumnCount Určuje počet sloupců gridu.
ColumnOrder Visuální pořadí sloupce v gridu.
Columns Seznam sloupců gridu.
ControlSource Vlastnost určující zdroj dat sloupce.
CurrentControl Vlastnost určující aktivní editační objekt ve sloupci.
This Relativní odkaz na aktuální objekt.
Thisform Relativní odkaz na formulář.
Thisformset Relativní odkaz na formset.

<< Předchozí díl