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

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


comment59

Как обычно, изучение класса 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 (внешнее изменение)