AXSelectedRows: AXOutline için seçilen satırları alma


1

AXSelectedRows'un beni nihayetinde gönderime gönderdiğini hissediyorum :) Kapsamlı bir araştırmadan sonra, AXSelectedRow'ların içeriğini programlı olarak nasıl listeleyeceğime karar verdim; Basitçe söylemek gerekirse, herhangi bir AXOutline'dan seçilen satırları almak için.

Önemsiz geliyor, ancak bir cevabı bulmak zor oldu - özellikle çevrimiçi dokümantasyon olmamasından dolayı (muhtemelen bir kitap almalıyım!) Garip bir şekilde, birçok kişi sadece programlı bir şekilde seçilmiş satırları almak yerine satırları seçmek istiyor gibi görünüyor. .

Kesinlikle kesinlikle yakınım. Şimdiye kadar ulaştım:

set selectedRows to value of attribute "AXSelectedRows" of outline1

Nerede outline1bir AXOutline ayarlanır. Sonraki:

set selectedRow to item 1 of selectedRows

Burası biraz bulanıklaştığı yer ( row 1yerine koymak için başarısız olduktan sonra item 1). selectedRowTür AXRow(veya row) olmasını beklerdim , ancak bunun yerine Automator çıkışı görüntülenir:

application "System Events"

Yani, öğe, "uygulama olayları" uygulamasının bir örneği gibi görünüyor - bu da önemli bir şeyi göz ardı ettiğime inanmamı sağlıyor. Ben her kombinasyonu denedim hissediyorum, söyledikten value'ın, attribute' ler ve rowbazı tip döküm dahil - 's.

Sinir bozucu kısım, Erişilebilirlik Müfettişindeki AXSelectedRows'un içeriğini gerçekten görebilmem! Ve böylece var olduğunu biliyorum. Geçici bir çözüm olarak kullanıyorum:

set selectedRows to selected of rows of outline1

Bununla birlikte, çok büyük listeler için performans sorunlarına yol açabilecek 'gerçek' değerleri bulmak için hala tüm diziyi geçmem gerektiğinden bu kesinlikle tercih edilemez.

Herhangi bir yardım çok takdir edilecektir!

Yanıtlar:


0

Sanırım AXSelectedRows'un değerini almak, henüz uygulanmayan bir şey. Bir Finder penceresini liste görünümünde açtığımda, iki satır seçin ve bu betiği çalıştırın:

tell application "System Events" to tell window 1 of process "Finder"
    value of attribute "AXSelectedRows" of outline 1 of scroll area 1 of splitter group 1
end tell

Sonuç:

{application "System Events", application "System Events"}

Bununla birlikte, seçilen satırları tekrar döngü kullanmadan almak için kimin cümlesini kullanabilirsiniz:

tell application "System Events" to tell process "Finder"
    rows of outline 1 of scroll area 1 of splitter group 1 of window 1 where selected is true
end tell

Bunu araştırdığın için teşekkürler, Lri. Öneriniz bir işe yarıyor! Yine de uygulanmadıysa şaşırırdım - AppleScript'te bir hata olma ihtimalinin daha fazla olduğuna inanıyorum. Apple'ın kendi belgelerine göre ( developer.apple.com/library/Mac/documentation/… ), AXSelectedRows bir dizi döndürmelidir - ve bu nedenle hata, uygulamayı unutmayı unutmuş olur :) soru!
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.