Bagikan melalui


Navigasi Spasial dan Logis

Klien mengambil informasi tentang objek yang secara spasial atau logis di dekat objek lain dalam kontainer yang sama dengan memanggil IAccessible::accNavigate dan menentukan salah satu konstanta navigasi.

Dengan klien navigasi spasial, navigasikan ke objek berdasarkan lokasinya di layar. Klien menavigasi ke atas, bawah, kiri, atau kanan dari objek saat ini untuk mendapatkan informasi tentang objek lain dalam kontainer yang sama.

Dengan klien navigasi logis menavigasi ke objek yang secara logis mendahului atau mengikuti objek lain, seperti yang ditentukan oleh server. Klien menavigasi ke semua anak objek dengan dua cara:

Terlepas dari arahnya, navigasi mengunjungi setiap anak yang terlihat milik objek induk. Anak yang tidak terlihat dapat dilewati dengan navigasi logis. Selain itu, setiap anak hanya dikunjungi sekali, dan navigasi tidak berputar. Artinya, metode gagal jika klien mencoba menavigasi sebelum objek pertama atau setelah objek terakhir.

Navigasi spasial dan logis terkait. Misalnya, di toolbar horizontal, memanggil metode dengan NAVDIR_RIGHT harus menghasilkan hasil yang sama seperti memanggil metode dengan NAVDIR_NEXT.

Objek awal navigasi adalah objek itusendiri atau salah satu anak objek, kecuali ketika NAVDIR_FIRSTCHILD atau NAVDIR_LASTCHILD ditentukan; dalam hal ini, navigasi harus dimulai dari objek itu sendiri.

Jika klien menavigasi dari objek yang dapat diakses ke elemen antarmuka pengguna saudara, atau jika anggota lVal varStart CHILDID_SELF dan bendera yang ditentukan di navDir adalah bendera navigasi apa pun kecuali NAVDIR_FIRSTCHILD atau NAVDIR_LASTCHILD, hasilnya dalam pvarEnd adalah ID anak atau antarmuka IDispatch. Jika pvarEnd berisi ID anak, klien harus terlebih dahulu mendapatkan penunjuk ke antarmuka IAccessible induk untuk menavigasi dari elemen antarmuka pengguna ini atau untuk mendapatkan informasi lebih lanjut tentang hal itu. Untuk mendapatkan objek induk, klien memanggil properti IAccessible::get_accParent dari objek saudara atau objek awal navigasi.

Perhatikan bahwa klien harus memiliki informasi tentang semua objek mengambang dengan memanggil fungsi EnumChildWindows. Karena objek mengambang tidak diklip ke induknya, klien tidak memiliki informasi tentang hubungan hierarki antara dua objek di dekat satu sama lain di layar.

Grafik berikut adalah contoh objek mengambang yang tidak diklip ke induknya.

cuplikan layar jendela terbuka mengambang di atas jendela studio pengembang microsoft yang lebih besar

Menetapkan Urutan di Navigasi Logis

Dalam navigasi logis, pengembang yang merancang objek membangun hubungan di antara mereka. Navigasi logis lebih subjektif daripada navigasi spasial. Selain itu, urutan dalam navigasi logis tidak sama dengan urutan yang digunakan dengan ID anak.

Untuk objek yang memiliki lokasi layar, pengembang server harus menetapkan urutan navigasi dengan cara yang dianggap logis oleh sebagian besar pengguna. Di negara/wilayah berbahasa Inggris, misalnya, ini berarti urutan kiri-ke-kanan, atas-ke-bawah.

Urutan navigasi logis harus urutan navigasi keyboard paralel. Misalnya, kotak dialog berisi tombol OK dan Batalkan pendorongan dan beberapa kontrol edit. Klien yang memanggil IAccessible::accNavigate untuk menavigasi ke objek berikutnya atau sebelumnya dalam kotak dialog tersebut bergerak dalam urutan yang sama dengan pengguna yang menekan TAB atau SHIFT+TAB untuk memindahkan fokus antar item.

Untuk objek yang belum menentukan lokasi layar, urutan logis diputuskan oleh pengembang server, dan pengembang klien tidak boleh membuat asumsi tentang hal itu. Misalnya, dapat diterima untuk objek yang tidak terlihat, seperti objek yang hanya disembunyikan sementara, untuk diselingi dengan objek yang terlihat.