У меня есть приложение flex с DataGrid с несколькими столбцами (определено в файле MXML), и мне нужно «наследовать» столбцы сетки. То есть, мне нужно написать код ActionScript, который, учитывая объект DataGrid, может определять различные вещи о сетке (и, более конкретно, столбцах сетки).Нужно «наследовать» внутренности flex <mx: itemRenderer>
В частности, если столбец представляет собой просто текстовый вывод, мне это все равно, но если в нем есть «управляемые» элементы управления (флажки, ссылки и т. Д.).
Во-первых, я предполагаю, что столбцы, содержащие «действующее» содержимое, будут находиться в пределах < mx: itemRenderer > теги (иначе это будет просто текст); сообщите мне, если это неверно.
Далее мне нужно «копать» в структуры, натягивая объект AS, соответствующий < тх: DataGridColumn > из < тх: DataGrid > (у меня это), а затем потянув объект как соответствующий к < mx: itemRenderer > из mx: DataGridColumn (два способа разграничения, это не кажется очень полезным), а затем вытаскивает объект AS, который соответствует < mx: Компонент > из mx: itemRenderer (если есть , мне непонятно, действительно ли компонент mx: Component создает объект) и, наконец, вытащил объект AS, соответствующий 0xmx: LinkButton > (или что-то еще) из mx: Component.
Кто-нибудь знает, как это сделать?
P.S. Я понимаю, что почти нет предела тому, что может скрываться внутри itemRenderer; если я смогу докопаться настолько далеко, я готов протестировать кучу вещей, которые я ожидаю, и игнорировать остальные.
Чтобы прояснить ситуацию, меня попросили предоставить соответствие (доступность) раздела 508 к существующему приложению. Конечно, в этом есть много частей, включая программы чтения с экрана и т. Д. ... но одним из первых шагов является то, что приложение можно использовать без мыши.
Многие из существующих экранов имеют технологию пользовательского интерфейса, состоящую из DataGrid с элементами, которые размещают элементы управления, такие как переключатели и кнопки ссылок, а также элементы в ячейках (одинаковый тип управления вплоть до столбца). Все хорошо и хорошо, за исключением того, что я не могу найти способ взаимодействовать с этими элементами управления с клавиатуры.
Итак, я модифицировал один экран, чтобы открыть горячую клавишу, которая отображает контекстное меню, позволяя пользователю стрелять вверх/вниз среди возможных элементов и нажать клавишу ВВОД, чтобы выбрать один (установите флажок, нажмите кнопку linkbutton, и т.д). Но это было специфично для экрана, и кому-то будет слишком легко обновить экран (например, добавить другой столбец действия) и пренебречь меню.
Был предложен лучший (?) Подход: подкласс сетки данных, интроспекция поиска действующих столбцов, создание меню автоматически, и теперь все, что нам нужно сделать, это заменить SuperDataGrid для DataGrid, и наши экраны будут быть совместимым с 508.
Если кто-то может порекомендовать лучший способ сделать экраны 508-совместимыми (без изменения пользовательского интерфейса) и с минимальным усилием на экране, я все уши.
Возможно, я недостаточно прояснился, так как вы продолжаете пропустить этот пункт, поэтому позвольте мне попробовать еще раз.
Я НЕ пишу код уровня приложения ... если бы я был, я бы точно знал, что делает логика, и я бы мог использовать связанные данные обычным способом. Фактически, код уровня приложения использует обычные данные. Но это совершенно не имеет значения.
Что мне нужно сделать, это написать «код уровня инфраструктуры»: то есть код, который работает «ниже» уровня логики приложения. Я пытаюсь эффективно добавить функцию DataGrids, которую должен был включить Adobe, но не сделал этого. Если я смогу заставить этот класс работать, можно будет просто отбросить его на десятки экранов БЕЗ МЕНЯ, КАК АВТОР АВТОМАТИЧЕСКОГО КЛАССА, ЗНАЧИТЕЛЬНО НИЧЕГО ОБ ЭТОМ ЭКРАНАХ ИЛИ ЛОГИКЕ В НИХ. Единственный способ, с помощью которого я могу представить эту работу, - это посмотреть в datagrid и обнаружить во время выполнения какие типы элементов управления скрываются внутри нее и, возможно, то, к чему они привязаны (на самом деле, я могу, возможно, просто выполнить любой щелчок = foo() "говорит, что нужно делать, и мне не нужно будет знать, к чему они привязаны).
Имеет ли это смысл?
Возможно ли это?
Мне вообще не нужно влиять на рендеринг, мне просто нужно вырыть инструмент рендеринга, чтобы найти флажок/etc внутри, на который я буду влиять обычными способами. – MarkV
@MarkV, хорошо, не делаю. Установите флажок в поле «данные», к которому привязан элемент itemRenderer. –
Состояние, несомненно, уже отражено в элементе данных ... но как я могу узнать, что * есть * флажок или какой элемент данных он привязан к * обобщенному * способу, даваемому немного, но datagrid? Обнаружение * существования * элемента управления и/или данных, с которыми оно связано, является проблемой, а не манипулировать им, когда я туда доберусь. – MarkV