У меня есть гибкое приложение с DataGrid с несколькими столбцами (определенными в файле MXML), и мне нужно «проанализировать» столбцы сетки.То есть мне нужно написать некоторый код ActionScript, который, учитывая объект DataGrid, может определять различные элементы сетки (и, в частности, столбцы сетки).
В частности, если столбец простовывод простого текста, мне на самом деле все равно ... но если в нем есть "действенные" элементы управления (флажки, кнопки ссылок и т. д.), то я это делаю.
Во-первых, я предполагаю, что столбцы, содержащие «действенное» содержимое, будут в пределахтеги (иначе это был бы просто текст);пожалуйста, дайте мне знать, если это неверно.
Далее мне нужно «копаться» в структурах, вытягивая объект AS, соответствующийвне(У меня есть это), затем потянув объект AS, соответствующийиз mx: DataGridColumn (два разных способа сделать это; ни один из них не кажется очень полезным), затем вытягивать объект AS, который соответствуетиз mx: itemRenderer (если таковой имеется; мне неясно, создает ли компонент mx: фактически объект) и, наконец, извлекает объект AS, соответствующий(или что-то еще) из компонента mx:
Кто-нибудь знает, как это сделать?
PS Я понимаю, что почти нет предела тому, что может скрываться в itemRenderer;если я смогу откопать это далеко, я готов проверить несколько вещей, которые ожидаю, и игнорировать все остальное.
Чтобы прояснить, меня попросили обеспечить соответствие Разделу 508(доступность) к существующему приложению.Конечно, есть много вещей, включая программы чтения с экрана и т. Д., Но один из первых шагов - убедиться, что приложение можно использовать без мыши.
Многие из существующих экранов имеют технику пользовательского интерфейса, состоящую из DataGrid с элементами визуализации элементов, которые помещают элементы управления, такие как переключатели и кнопки ссылок, и тому подобное, в ячейки (один и тот же тип элемента управления вниз по столбцу).Все хорошо, за исключением того, что я не могу найти способ взаимодействия с этими элементами управления с помощью клавиатуры.
Итак, я изменил один экран, чтобы иметь горячую клавишу, которая открывает контекстное меню, позволяя пользователю перемещаться вверх / вниз среди элементов, доступных для действий, и нажимаю клавишу ВВОД, чтобы выбрать один (переключите флажок, нажмитекнопка ссылки и т. д.).Но это зависело от экрана, и для кого-то будет слишком легко обновить экран (например, добавить еще один столбец) и пренебречь меню.
Был предложен более совершенный (?) Подход: создать подкласс для сетки данных, проанализировать, чтобы найти столбцы, пригодные для выполнения, построить меню автоматически, и теперь все, что нам нужно сделать, - это заменить SuperDataGrid для DataGrid и нашЭкраны будут соответствовать 508.
Если кто-то может порекомендовать лучший способ сделать экраны 508-совместимыми (без изменения интерфейса) и с минимальными усилиями для каждого экрана, я весь слух.
Может быть, я недостаточно ясен, так как вы упускаете суть, поэтому позвольте мне повторить попытку.
Я НЕ пишу код уровня приложения ... если бы я был, яЯ бы точно знал, что делает логика, и я мог бы использовать связанные данные обычным способом.На самом деле, код прикладного уровня использует связанные данные обычным способом.Но это совершенно не относится к делу.
Что я пытаюсь сделать, так это написать код «уровня инфраструктуры», то есть код, который работает «ниже» уровня логики приложения. Я пытаюсь эффективно добавить в DataGrids функцию, которую Adobe должна была включить, но не добавила. Если я смогу заставить этот класс работать, можно будет просто поместить его на десятки экранов БЕЗ МНЕ, КАК АВТОРА КЛАССА, ЗНАЮЩИХ НИЧЕГО О ЭТИХ ЭКРАНАХ ИЛИ ЛОГИКЕ. Единственный способ представить эту работу - это посмотреть на сетку данных и выяснить, во время выполнения, какие типы элементов управления скрываются в нем и, возможно, с чем они связаны (на самом деле, я могу просто выполнить любой щелчок =) Атрибут foo () "говорит, что нужно делать, и мне не нужно знать, с чем они связаны).
Имеет ли это смысл?
Возможно ли это?