Нужно "проанализировать" внутренности flex <mx: itemRenderer> - PullRequest
0 голосов
/ 14 октября 2010

У меня есть гибкое приложение с 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 () "говорит, что нужно делать, и мне не нужно знать, с чем они связаны).

Имеет ли это смысл?

Возможно ли это?

1 Ответ

0 голосов
/ 14 октября 2010

Предмет взаимодействует с внешним миром через свойство data. Они должны отображать данные по желанию и вносить изменения в data по мере необходимости. Они не должны выходить наружу, и вы не должны пытаться проникнуть внутрь, чтобы напрямую воздействовать на средство визуализации элементов.

Что касается основной проблемы, которую вы пытаетесь решить, вы ее вообще не заявили. Вы описываете желание выполнить только конкретное решение, но не описали основную проблему. Что вы действительно пытаетесь достичь? Не говорите о получении доступа к визуализации элементов или копании в DataGrid, но какое взаимодействие или влияние на строки вы хотите? Проблема в том, что ваш подход несколько отсталый, и поэтому он не работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...