Просмотр полной версии : Присвоение значений компонентам на ранее не открытой вкладке
Freedom77
01.10.2010, 01:29
Как ПРАВИЛЬНО присвоить значения компонентам, которые размещены на ранее не открытой вкладке. При присвоении значения одновременно с командой ...selectedChild= ... выдаёт ошибку о не существовании компоненты. Если значение присвоить в событии creationComplete то всё нормально. Но как быть если таких значений большое количество? Не прописывать же их для каждой компоненты отдельно.
Волгоградец
01.10.2010, 11:32
Если вкладок немного, то можно создать их все сразу, а не создавать каждую при открытии.
Freedom77
01.10.2010, 11:55
О каких значениях речь?
Например в Label внести определённое значение.
Добавлено через 2 минуты
Если вкладок немного, то можно создать их все сразу, а не создавать каждую при открытии.
Не совсем верно на мой взгляд. Это займёт дополнительное время при генерации.
Не прописывать же их для каждой компоненты отдельно.
А как вы себе это представляли?
Объясните поподробнее, чего вы хотите добиться, я вас явно не понимаю.
P.S. На абстрактный вопрос, можно получить только абстрактный ответ.
Freedom77
02.10.2010, 23:03
Объясните поподробнее, чего вы хотите добиться, я вас явно не понимаю.
Есть TabNavigator с несколькими вкладками. Например в одной вкладке ввожу данные в текстовое поле, а в другом нужно отобразить.
Как делаю:
На первой вкладке рядом с текстовым полем кнопка, по нажатию на которую происходит:
1) Присвоение например в label введенного значения
2) Переход на вторую вкладку.
Ошибка на 1 шаге. Так как label не отрисован, соответственно присвоить значение не получается (хотя странно что система не видит какие компоненты у неё расположены).
Смена порядка выполнения 1 и 2 пункта роль не играет.
Можно прилепить присвоение значения в CreateComplete 2 вкладки. Но это разово, и при повторном переходе уже не работает. Пока не могу найти событие, которое выполняется при каждом переходе на определённый NavigatorContent.
1. Проверить создан ли компонент (после первого перехода он уже будет создан). Можно просто обернуть в try catch.
2. Если создан, то присваиваем значения, если не создан, то присваиваем по creationComplete
Ну и переход в любом месте по-вкусу.
Freedom77
03.10.2010, 05:55
Идея как раз такая была. Не подскажите как провести проверку на существование компоненты?
Можно просто обернуть в try catch присвоение значений.
Freedom77
04.10.2010, 01:25
Неужели разработчики не учитывали такой случай, быть не может. Облазил все сайты, путного ответа как решить стандартным путём не нашёл.
Должен же быть стандартный путь присвоения значения компонентам расположенным в приложении, несмотря на то что та или иная вкладка или ещё что-то не открывалось.
1. Создаем [Bindable] переменные с гет/сет методами для необходимых параметров.
2. Привязывает параметры объектов к переменным
3. При переходе на вкладку меняем значения переменных
Freedom77
04.10.2010, 11:35
уже лучше, спасибо!
Но вопрос присвоения компонентам уже существующих прямым указанием id и свойства меня не оставляет в покое. Я понимаю присвоить значение новой компоненте, которая создаётся динамически. Но тут ведь всё расписано.
Может в настройках проекта есть пункт определить все компоненты при запуске (не прорисовывая их)?
Подобные задачи решаются с помощью модели. Компоненты следят за изменениями модели и меняют свое состояние (немного похоже на биндинг).
GemiBillyBob
13.10.2010, 20:01
Ставим creationPolicy="all", и все вкладки и их внутренности создаются при создании компонента, в котором они находятся.
Перечитал заново, это не удовлетворяет требованиям(
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.