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

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


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 (внешнее изменение)