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 |