Инструменты пользователя

Инструменты сайта


comment59

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

comment59 [2018/04/13 22:43] (текущий)
Строка 1: Строка 1:
 +Как обычно, изучение класса RunBase начинается с рассмотрения примеров в стандартной Axapte  таких как классы Tutorial_RunbaseBatch, Tutorial_RunbaseForm, являющимися наследниками RunBase. 
 +В основе лежит концепция формирования формы диалога из класса.
 +Перед разработкой диалога необходимо определится с дизайном и функционалом. Это упростит разработку. Например, откуда будет вызываться диалог. Обычно это использование MenuItems.
 +Рассмотрим пример изменения  дня рождения у сотрудника. 
 +Для запуска диалога необходимо определить, как минимум, следующие методы :
 +classDeclaration, pack, unpack, dialog, main. При вызове класса активизируется статический метод  main(). В нем определяется  вызов диалога .  Для добавления заголовка на форму необходимо использовать метод description(). Для получения значения даты из диалога используется метод getFromDialog()  Для получения текущего курсора используется метод initFromArgs(). Выполнение необходимого функционала можно закладывать в run() или do().
  
 +
 +Создаем класс
 +
 +public class Example_RunBase extends RunBase
 +{
 +
 +    EmplTable              emplTable;
 +
 +    //определение пременной в диалоге
 +    transDate              transDate;
 +
 +    //определение поля диалога
 +    dialogField            dlgTransDate;
 +
 +
 +    // как правило стандартный набор
 +    #define.CurrentVersion(1)
 +    #define.Version1(1)
 +    #localmacro.CurrentList //хранение переменной
 +    transDate
 +    #endmacro
 +}
 +
 +Методы  pack и unpack можно переносить без изменений
 +
 +public Object dialog()
 +{
 +    DialogRunbase       dialog = super();
 +;
 +    //определяется форма диалога, количесто полей, закладок.
 +    dlgTransDate = dialog.addFieldValue(typeid(transDate),transDate);
 +
 +    return dialog;
 +}
 +
 +static ClassDescription description()
 +{
 +    return "Разработка диалога"; //определяем заголовок формы
 +}
 +
 +public boolean getFromDialog()
 +{
 +;
 +    // получение значения даты с диалога
 +    transDate   = dlgTransDate.value();
 +
 +    return super();
 +}
 +
 +static void main(Args args)
 +{
 +    Example_RunBase    example;
 +;
 +    //можно использовать для запрета вызова не через menuItem
 +        if (!args || args.dataset() != tablenum(emplTable))
 +        throw error(strfmt("@SYS25516"));
 +
 +    // активизируем класс
 +    example = new Example_RunBase();
 +
 +    //получаем значение курсора
 +    example.initFromArgs( args); 
 + 
 +    //стандартный набор запускающий диалог
 +    if (example.prompt())
 +        example.run();
 +}
 +
 +public void initFromArgs(Args _args)
 +{
 +;
 + emplTable = _args.record();  //получаем значение курсора
 +}
 +
 +void run() //выполняем необходимые действия
 +{
 +   
 +       boolean ok = true;// при нажатии
 +    ;
 +            if (ok)
 +
 +            emplTable.BirthDate=transDate;
 +}
 +
 +Размещаем на форме EmplTable menuItemButton, вызывающий наш класс и проверяем.
 +Это самый простейший пример использования класса. Кто хочет использовать дополнительные возможности то будет полезным знать о других методах класса
comment59.txt · Последнее изменение: 2018/04/13 22:43 (внешнее изменение)