Prostorová a logická navigace
Klienti načítají informace o objektu, který je prostorově nebo logicky blízko jiného objektu ve stejném kontejneru voláním IAccessible::accNavigate a určením jedné z navigačních konstant.
S prostorovou navigaci klienti přecházet na objekt na základě jeho umístění na obrazovce. Klienti přecházeli z aktuálního objektu nahoru, dolů, doleva nebo doprava a získali informace o jiném objektu ve stejném kontejneru.
Při logické navigaci klienti přecházejí na objekt, který logicky předchází nebo následuje jiný objekt, jak určuje server. Klienti přechádí do všech podřízených objektů dvěma způsoby:
- Spusťte navigaci pomocí NAVDIR_FIRSTCHILD a pak opakovaně volejte metodu pomocí NAVDIR_NEXT.
- Spusťte navigaci pomocí NAVDIR_LASTCHILD a opakovaně volejte metodu pomocí NAVDIR_PREVIOUS.
Bez ohledu na směr navigace navštíví každé viditelné podřízené položky, které patří k nadřazeného objektu. Neviditelné podřízené položky mohou být vynechány pomocí logické navigace. Kromě toho je každé dítě navštíveno pouze jednou a navigace se nesmychá. To znamená, že metoda selže, pokud se klient pokusí přejít před prvním objektem nebo za posledním objektem.
Prostorová a logická navigace souvisí. Například na vodorovném panelu nástrojů by volání metody s NAVDIR_RIGHT mělo vytvořit stejné výsledky jako volání metody s NAVDIR_NEXT.
Počátečním objektem navigace je objekt, kterýsebe nebo jeden z podřízených objektů, s výjimkou případů, kdy je zadánNAVDIR_FIRSTCHILD nebo NAVDIR_LASTCHILD; v tomto případě musí navigace začínat od samotného objektu.
Pokud klient přejde z přístupného objektu na prvek uživatelského rozhraní na stejné stejné nebo pokud lVal člen varStart je CHILDID_SELF a zadaný příznak v navDir je jakýkoli navigační příznak s výjimkou NAVDIR_FIRSTCHILD nebo NAVDIR_LASTCHILD, výsledkem pvarEnd je buď podřízené ID, nebo IDispatch rozhraní. Pokud pvarEnd obsahuje podřízené ID, klienti musí nejprve získat ukazatel na rozhraní IAccessible, aby mohli přejít z tohoto prvku uživatelského rozhraní nebo získat další informace o něm. Chcete-li získat nadřazený objekt, klienti volají IAccessible::get_accParent vlastnost objektu na stejné straně nebo počáteční objekt navigace.
Všimněte si, že klienti musí mít informace o všech plovoucích objektech voláním EnumChildWindows funkce. Vzhledem k tomu, že plovoucí objekt není oříznut na nadřazený objekt, klienti nemají informace o hierarchické relaci mezi dvěma objekty blízko sebe na obrazovce.
Následující obrázek je příkladem plovoucího objektu, který není oříznut na nadřazený objekt.
Vytvoření pořadí v logické navigaci
V logické navigaci vytvářejí vývojáři, kteří navrhují objekty, vztahy mezi nimi. Logická navigace je subjektivní než prostorová navigace. Pořadí v logické navigaci také není stejné jako pořadí použité s podřízenými ID.
U objektů s umístěním obrazovky by vývojáři serveru měli nastavit pořadí navigace způsobem, který by většina uživatelů považovala za logickou. Například v anglicky mluvících zemích/oblastech to znamená řazení zleva doprava a shora dolů.
Pořadí logické navigace musí mít paralelní pořadí navigace pomocí klávesnice. Například dialogové okno obsahuje OK a Zrušit tlačítka a několik ovládacích prvků pro úpravy. Klient, který volá IAccessible::accNavigate přejít k dalšímu nebo předchozímu objektu v daném dialogovém okně se přesune ve stejném pořadí jako uživatel, který stisknete klávesu TAB nebo SHIFT+TAB a přesune fokus mezi položkami.
U objektů, které nemají definovaná umístění obrazovky, se logické pořadí rozhoduje vývojáři serverů a vývojáři klientů by o něm neměli předpokládat. Je například přijatelné pro neviditelné objekty, jako jsou objekty, které jsou pouze dočasně skryté, prokládání s viditelnými objekty.