1 votos

AXSelectedRows: Obtención de filas seleccionadas para AXOutline

Creo que AXSelectedRows por fin me ha vencido :) Después de una extensa investigación, estoy perplejo sobre cómo listar programáticamente el contenido de AXSelectedRows; en pocas palabras, para obtener las filas seleccionadas de cualquier AXOutline.

Suena trivial, pero encontrar una respuesta ha resultado difícil - particularmente debido a la falta de documentación en línea (¡aunque probablemente debería comprar un libro!) Extrañamente, mucha gente parece querer seleccionar programáticamente filas, en lugar de obtener filas seleccionadas.

Sin embargo, estoy muy cerca. He llegado hasta aquí:

set selectedRows to value of attribute "AXSelectedRows" of outline1

donde outline1 se establece en un AXOutline. Siguiente:

set selectedRow to item 1 of selectedRows

Aquí es donde se vuelve un poco turbio (después de haber fallado ya en ponerlo en row 1 en lugar de item 1 ). Yo esperaría selectedRow sea del tipo AXRow (o row ), pero en su lugar aparece la salida de Automator:

application "System Events"

Es decir, el elemento parece ser una instancia de la aplicación "Eventos del sistema", lo que me lleva a pensar que estoy pasando por alto algo importante. Dicho esto, creo que he probado todas las combinaciones de value 's, attribute y row incluyendo algunos tipos de fundición.

La parte frustrante es que puedo ver el contenido de AXSelectedRows en el Inspector de Accesibilidad. Y así sé que existe. Como solución, estoy utilizando:

set selectedRows to selected of rows of outline1

Sin embargo, esto no es preferible, ya que tengo que recorrer toda la matriz para encontrar los valores "verdaderos", lo que podría tener problemas de rendimiento para listas muy grandes.

Cualquier ayuda será muy apreciada.

0voto

Fuzzy Purple Monkey Puntos 702

Supongo que obtener el valor de AXSelectedRows es algo que no se ha implementado. Cuando abro una ventana del Finder en vista de lista, selecciono dos filas y ejecuto este script:

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

El resultado es:

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

Sin embargo, puede utilizar una cláusula whose para obtener las filas seleccionadas sin utilizar un bucle de repetición:

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

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X