Раздел: [[../ИнтерфейсПользователя]] ---- === Как на объект класса Dialog добавить comboBox с динамически генерируемым списком === http://blogs.msdn.com/palle_agermark/archive/2005/06/30/434146.aspx static void comboBoxHiJacker(Args _args) { Dialog dialog = new Dialog(); DialogField dialogField; FormBuildComboBoxControl formComboBoxControl; ; // Any enum, except NoYes, will do. dialogField = dialog.addField(typeId(ABC)); formComboBoxControl = dialogField.control(); formComboBoxControl.enumType(0); formComboBoxControl.label("My combo box"); formComboBoxControl.items(3); formComboBoxControl.item(1); formComboBoxControl.text("Item 1"); formComboBoxControl.item(2); formComboBoxControl.text("Item 2"); formComboBoxControl.item(3); formComboBoxControl.text("Item 3"); dialog.run(); info(dialogField.value()); } === Как динамически изменять активность поля диалога === [[http://forum.mazzy.ru/index.php?showtopic=1951]] [[http://www.axforum.info/forums/showthread.php?s=&threadid=3949]] -- как изменять динамически активность поля диалога: Если перекрыть в вашем классе метод **void dialogSelectCtrl()** и произвести вызов метода **dialog.allowUpdateOnSelectCtrl(true);** в перекрытом методе **dialog()**, то ваш перекрытый метод **dialogSelectCtrl()** будет вызываться каждый раз при получении фокуса элементом ввода. Вконце метода dialog() добавляете следующий код { ... dialog.allowUpdateOnSelectCtrl(true); this.dialogSelectCtrl(); return dialog; } далее перекрываете метод dialogSelectCtrl(), в котором и обрабатываете ваши контролы. Например так: public void dialogSelectCtrl() { super(); flag = dlgControlFlag.value(); if(flag) dlgControlField.active(false); else dlgControlField.active(true); } Советую однако использовать вместо active() свойство allowEdit(), так как результат практически тот же, но обновление работает лучше. === Как сделать поле диалога обязательным для заполнения === из microsoft.public.axapta.programming , Regards! Ruslan: Поле диалога можно сделать обязательным для заполнения. Для этого нужно создать метод для изменения свойства mandatory в классе DialogField. 1. Добавьте метод mandatory() в класс DialogField: // Created by GRR on 01.11.2005 void mandatory(boolean r) { str name; // If properties exists then we are on server - если properties существуют, значит код исполняется на сервере if (properties) { name = #Propertymandatory; if (! properties.exists(name)) properties.add(name,true); properties.value(name,r); } else this.fieldControl().mandatory(r); } 2. В код метода unpack() добавьте следующие строки: ....................... // Created by GRR on 01.11.2005 --> case #PropertyMandatory: this.mandatory(unpackedProperties.valueIndex(i)); break; // Created by GRR on 01.11.2005 <-- ....................... Аналогичным способом можно добавить, к примеру, управление свойством replaceOnLookup ----- [[http://spaces.msn.com/fredshen/Blog/cns!B32E9346DBBAE4E3!174.entry]] === Как задавать параметры диалога открытия файлов === Если в диалоге используется EDT [[../EDT/FileNameOpen]] или [[../EDT/FileNameSave]], то совйства открывающегося диалога выбора файла можно задать при помощи свойств filename* диалога. Пример: static void Test_DialogFileNameOpen(Args _args) { Dialog d=new Dialog("Test"); DialogField f = d.addField(typeID(FileNameOpen)); ; d.filenameLookupFileName('*.txt'); d.filenameLookupInitialPath(WinApi::getTempPath()); d.filenameLookupTitle("Title"); d.filenameLookupFilter(["*.txt", "Текстовые файлы"]); d.run(); }