Отследить изменения в значениях полей окна редактирования.

Есть окно редактирования, на окне есть:
1. ChexBox (IsChecked = false)
2. Edit (IsEnabled = false)

Необходимо менять Edit.IsEnabled на true при изменении ChexBox .IsChecked на true

Если работа ведется с датасетом, то отслеживать изменение можно по событию "dlDataOnDatasetDataChange", а как быть, если если нет ни выборки, ни набора данных(есть только окно и два контрола).

Спасибо

Нравится

4 комментария

Дмитрий, насколько я поняла Ваш вопрос, то необходимо менять свойства одного контрола в зависимости от того, выбран ли другой. У любого компонента окна есть событие OnClick. Оно срабатывает, когда мы клацаем на контрол. В него можно прописывать нужные действия. Еще нужно не забыть про онпрепаре окна -- там прописывать свойства "по умолчанию".
Надеюсь, я правильно поняла Вашу проблему и эта общая схема Вам поможет. Если нет -- напишите, опишу подробнее)

Спасибо, для CheckBox подходит событие onClick, но как быть если необходимо отследить изменение например в поле ввода текста или даты?

Также хотелось бы уточнить еще:

1. Возможно ли в этом окне(нет ни выборки, ни датасета) использовать справочники и потом работать с их значениями, попробовал поместить на окно контрол LookupDataControl, подключить к окну датасет ds_Contact, в DatasetLink контрола указал подключенный датасет, попробовал указать DatafieldName и получил ошибку "Невозможно установить имя поля "ID" для компонента "LookupDataControl".

2. Поместил на окно enumControl, указал необходимое перечисление, как получить название элемента перечисления(не код, а заголовок)? Пробовал выводить в лог enumControl.Value, enumControl.Code, но ничего не получилось.

Здравствуйте Дмитрий,
0) "но как быть если необходимо отследить изменение, например в поле ввода текста или даты?"
К примеру в случае контрола Edit1 мы меняем свойство видимости контрола Edit

function Edit1OnKeyDown(Control, Key, Shift) {
	Edit.IsEnabled = true;
}

в случае DateTimeControl

function DateTimeControlOnChange(DateTimeControl) {
	Edit.IsEnabled = true;
}

1) Воспользуйтесь LookupControl в случае с ds_Contact в карточке Вы увидите поле для отображения Name, а в в свойстве LookupControl.Value получите ID выбранной записи

2) Свойство EnumControl.Value.Caption выведет заголовок с перечисления

Дмитрий, для выяснения данных свойств полезно установить debugger; (http://www.community.terrasoft.ua/blogs/6549) в каком-то месте карточки (например, на btnOKOnClick) и ввести, например в Visual Studio в окно Watch название контрола

Алексей, спасибо, все ОК.

Показать все комментарии