05.06.2006, 12:59 | #1 |
Участник
|
Получение значений из диалога
Здравствуйте!
Мне нужно получить значение из одного из полей диалога после окончания его работы. Перебором всех полей диалога я нахожу это поле, но значение его всегда равно NULL. Для ясности ситуации привожу джоб. PHP код:
__________________
И почему никто меня не любит? Да, я надоедливый |
|
05.06.2006, 13:19 | #2 |
Модератор
|
Без паники!
Все работает: X++: static void Job10(Args _args) { Dialog dialog; DialogField dialogFieldName; DialogField dialogFieldSex; Name name; boolean isWoman; ; dialog = new Dialog("Input your name"); dialogFieldName = dialog.addField(typeId(Name), "Введите Ваше имя"); //dialogFieldName.helpText('tst'); dialogFieldSex = dialog.addField(typeId(NoYes), "Вы женщина?"); //dialogField.helpText('tst'); if (dialog.run()) { name = dialogFieldName.value(); isWoman = dialogFieldSex.value(); } else throw error("Прервано пользователем"); info(strfmt("%1, %2",name, isWoman)); } Георгий. ПОЧЕМУ внутренняя переменная начинается с "_" ???? Изучайтк BP. Смотрите tutorials. |
|
05.06.2006, 13:38 | #3 |
Участник
|
В том то и проблема, что я не могу использовать DialogField... я не знаю изначально сколько у меня будет полей. Я создаю поля динамически.
Но спасибо за участие. Насчет внутренних переменных... если я не ошибаюсь, следуя BP нужно '_' ставить только перед переменными, передаваемыми в функцию... Постараюсь в следующий раз делать правильно, в соотвтетсвии с BP.
__________________
И почему никто меня не любит? Да, я надоедливый |
|
05.06.2006, 13:48 | #4 |
Участник
|
Вообще Диалог в трехровневой конфигурации состоит из клиентской и серверной части, и надеятся на то что у него есть контролы нельзя...
|
|
05.06.2006, 13:56 | #5 |
Модератор
|
Цитата:
Сообщение от belugin
Вообще Диалог в трехровневой конфигурации состоит из клиентской и серверной части, и надеятся на то что у него есть контролы нельзя...
|
|
05.06.2006, 14:28 | #6 |
Участник
|
Я уверен, что есть простое решение моей проблемы.
Но пока не осенило.
__________________
И почему никто меня не любит? Да, я надоедливый |
|
05.06.2006, 14:33 | #7 |
Участник
|
Записывайте создаваемые объекты DialogField в массив. Потом ищите нужный в вашем массиве и смотрите его значение
|
|
|
За это сообщение автора поблагодарили: Antant (1). |
05.06.2006, 14:38 | #8 |
Участник
|
Цитата:
Сообщение от Hezl
Записывайте создаваемые объекты DialogField в массив. Потом ищите нужный в вашем массиве и смотрите его значение
__________________
И почему никто меня не любит? Да, я надоедливый |
|
05.06.2006, 14:49 | #9 |
Участник
|
Вот что у меня получилось, вариант работающий.
PHP код:
__________________
И почему никто меня не любит? Да, я надоедливый |
|
05.06.2006, 14:54 | #10 |
Участник
|
Ну как-нибудь так:
Код: static void testDialog(Args _args) { Dialog cDialog; DialogField dialogField; Array arrDialogField = new Array(types::Class); void showFields(object o,str name) { int i; DialogField dField; ; for (i=1;i<=arrDialogField.lastIndex(); i++) { dField = arrDialogField.value(i); info(dField.value()); } } ; cDialog = new Dialog ('тестовый диалог'); dialogField = cDialog.addField(typeId(NoYes), 'тестовое поле диалога'); dialogField.helpText('tst'); arrDialogField.value(1, dialogField); dialogField = cDialog.addField(typeId(Num), 'тестовое поле диалога'); dialogField.helpText('tst2'); arrDialogField.value(2, dialogField); cDialog.run(); showFields(cDialog.formBuildDesign(), 'Test'); if (!cDialog.closedOk()) return; cDialog.finalize(); } |
|
05.06.2006, 15:17 | #11 |
Участник
|
лучше List - он как раз для этого предназначен - для упорядоченных списков или Set если порядок не волнует.
|
|