Класс aForm

Определяет программный интерфейс экранных форм Ананаса, предназначенный для использования Ананас.Скриптом модуля экранной формы Документа и других бизнес объектов Ананаса. Подробнее...

#include <aform.h>

Полный список членов класса

Открытые слоты

void done (int rc)
 Deprecated.
void Show (bool modal=FALSE)
 ScriptAPI. Показывает форму на экране.
bool Close ()
 ScriptAPI. Закрывает и уничтожает форму.
void show ()
 Deprecated. See Show().
void close ()
 Deprecated.
void maximize (bool m)
 ScriptAPI. Распахивает окно на все рабочее прастранство.
QVariant Value (const QString &name)
 ScriptAPI. Возвращает значение поля экранной формы.
QVariant DBValue (const QString &name)
 ScriptAPI. Возвращает значение атрибута <name> бизнес объекта Ананаса.
int SetValue (const QString &name, QVariant value)
 ScriptAPI. Устанавливает значения виджетов экранной формы.
int SetObjValue (const QString &name, aObject *value)
 ScriptAPI. Устанавливает значения виджетов формы сложных типов (aDocument, aCatalogue).
void SetColumnReadOnly (const QString &tname, int numCol, bool ro)
 ScriptAPI. Устанавливает для столбца таблицы флаг только чтение.
int ColIndex (const QString &tname, const QString &colname)
 ScriptAPI. Возвращает индекс столбца таблицы tname по его имени в метаданных.
int TabCount (const QString &tname)
 ScriptAPI. Возвращает количество строк в табличном виджете wDBTable.
QVariant TabValue (const QString &tname, int row, int col)
 ScriptAPI. Возвращает значение ячейки табличного виджета wDBTable.
QVariant TabDBValue (const QString &tname, int row, int col)
 ScriptAPI. Возвращает значение ячейки табличного виджета wDBTable для сложного типа данных.
void TabNewLine (const QString &tname)
 ScriptAPI. Добавляет новую строку в табличный виджет wDBTable.
void TabUpdate (const QString &tname)
void SetTabValue (const QString &tname, const QString &colname, int row, QVariant value)
 ScriptAPI. Задает значение ячейки табличного виджета wDBTable.
void setfocus (QString fname)
 Deprecated.
void SetFocus ()
ERR_Code UpdateDB ()
 ScriptAPI. Обновляет данные в базе.
ERR_Code update ()
 Depticated.
int turn_on ()
 Deprecated.
int turn_off ()
 Deprecated.
int SignIn ()
 ScriptAPI. Проводит (регистрирует) документ.
int SignOut ()
 ScriptAPI. Отменяет проведение (регистрацию) документа.
int Update ()
 ScriptAPI. Обновляет экранную форму.
void SetReadOnly (bool status)
 ScriptAPI. Устанавливает флаг "только чтение".
bool IsReadOnly ()
 ScriptAPI. Возвращает значение флага "только чтение".
int GetMode ()
 ScriptAPI. Получение режима открытия формы.
QString Propis (QString val, bool need_kopeyki=true, bool male=true, const QString &end1="рублей", const QString &end2="рубль", const QString &end3="рубля")
 Конвертирует число в его текстовое представление c указанием единиц измерения.
QString MoneyToText (QString amount, QString currency)
 Конвертирует числовое представление денег в пропись с учетом указанной валюты.
QString ConvertNumber2MoneyFormat (double number)
 Возвращает значение атрибута формы.
QString ConvertDateFromIso (const QString &ISODate)
 ScriptAPI. Конвертирует дату в локальный формат. Используется для вывода на печать.
QString EndOfDay (const QString &ISODate)
 ScriptAPI. Возвращает дату-время на конец дня.
void SelectByCurrent (aObject *doc)
 ScriptAPI. Используя идентификатор редактируемого виджетами формы документа, настраивает объект aDocument на доступ к документу с таким же идентификатором.
void SetCurrent (aObject *doc)
 Устаревшая. Смотри SelectByCurrent().
aObjectCurrent ()
 ScriptAPI. Возвращает ссылку на бизнес объект, редактируемый данной экранной формой.
QWidget * Widget (QString name)
 ScriptAPI. Возвращает указатель на виджет по его имени.
bool FormHasFunction (const QString functionName)

Сигналы

void selected (Q_ULLONG uid)
void closeForm (Q_ULLONG)
void changedData ()
void update (ANANAS_UID)

Открытые члены

 aForm (QWidget *parent, aEngine *eng)
 aForm (QWidget *parent, aEngine *eng, Q_ULONG form_mid=0, aWidget *caller=NULL)
 aForm (QWidget *parent, aEngine *eng, QString oftype, QObject *aobj=NULL)
void init ()
QWidget * aParent (QWidget *widget)
int New ()
int Select (Q_ULLONG id)
int SelectGroup (Q_ULLONG id)
Q_ULLONG selectedCatId ()
Q_ULLONG selectedId ()
QVariant tabValue (const QString &tname, int row, int col, bool dbval=false)
void setMode (int m)
 ScriptAPI. Устанавливает режим формы.

Открытые атрибуты

aEngineengine
aDatabasedb
aCfgmd
aCfgItem mdObj
QWidget * parentWidget
bool closeAfterSelect
QWidget * form

Защищенные члены

virtual void initWidget (QWidget *widget, aDatabase *adb)
virtual void initContainer (aWidget *widget, aDatabase *adb)
aWidgetparentContainer (QWidget *widget)


Подробное описание

Определяет программный интерфейс экранных форм Ананаса, предназначенный для использования Ананас.Скриптом модуля экранной формы Документа и других бизнес объектов Ананаса.

Любая экранная форма, спроектированная в Ананас.Дизайнере имеет методы этого класса. Объект данного класса создается при создании формы. Программный код, написанный на Ананас.Скрипте и хранящийся в модуле экранной формы (вкладка "Модуль" в Дизайнере) может обращаться к методам этого объекта напрямую, без указания имени объекта.

Кроме того, класс обеспечивает вызов некоторых функций на Ананас.Скрипте, определенных в модуле экранной формы, при наступлении определенных событий, например открытии или закрытии формы, изменения значения виджетов формы и т.п Полный список этих событий и функций можно посмотеть на сайте Ананаса в разделе руководства по Ананас.Дизайнеру.


Конструктор(ы)

aForm::aForm ( QWidget *  parent,
aEngine eng 
)

Base form object.

Перекрестные ссылки aDatabase::cfg, aEngine::db и init().


Методы

void aForm::init (  ) 

Инициализирует форму, меняет родителя у центрального виджера формы, если это необходимо. Обрабатывает также модуль скрипта, благодаря этому впоследствии можно вызывать функции, определенные в этом модуле.

Перекрестные ссылки aCfg::attr(), aWidget::createToolBar(), aWindowsList::find(), initContainer(), aWindowsList::insert(), aCfg::objClass(), aCfg::parent(), aLog::print(), aEngine::project, aWindowsList::remove(), aWidget::setFormMode(), SetReadOnly(), aCfg::sText() и aEngine::wl.

Используется в aForm().

QWidget * aForm::aParent ( QWidget *  widget  ) 

Возвращает объект-контейнер для заданного виджета.

Аргументы:
widget - виджет, для которого необходимо найти объект-контейнер.
Возвращает:
объект контейнер.

void aForm::setMode ( int  m  ) 

ScriptAPI. Устанавливает режим формы.

Аргументы:
m - Допустим один из трех режимов открытия формы: 0 - новая, 1 - редактирование, 2- просмотр.
См. также:
GetMode()

Используется в aEngine::openForm().

void aForm::Show ( bool  modal = FALSE  )  [slot]

ScriptAPI. Показывает форму на экране.

Перемещает ее в левый верхний угол рабочего пространства. Вызывает функцию on_formstart() скрипта модуля экранной формы, если функция определена в модуле. Параметр modal определяет является ли форма модальной.

См. также:
close

Перекрестные ссылки Close() и aEngine::project.

Используется в aEngine::openForm() и show().

bool aForm::Close (  )  [slot]

ScriptAPI. Закрывает и уничтожает форму.

Вызывает функцию on_formstop() скрипта модуля экранной формы, если функция определена в модуле.

См. также:
show

Перекрестные ссылки aLog::print(), aWindowsList::remove() и aEngine::wl.

Используется в close() и Show().

QVariant aForm::Value ( const QString &  name  )  [slot]

ScriptAPI. Возвращает значение поля экранной формы.

Например, значение поля шапки "Номер" приходной накладной. Слот предназначен для использования Ананас-Скриптом.

Аргументы:
name - имя поля, как оно определено в метаданных. Например, "Номер" или "Покупатель".
Возвращает:
значение поля. Необходимо понимать, что если поле имеет сложный тип данных, например его значение задается выбором элемента из справочника товаров, то будет возвращено текстовое представление товара (его название), а не ссылка на составной объект, хранящий все атрибуты товара. Для того что бы получить доступ к составному объекту, для обращения ко всем атрибутам товара необходимо воспользоваться функцией DBValue();
См. также:
aForm::DBValue()
Пример кода для размещения в модуле экранной формы. Экранная форма содержит одну кнопку с именем Button1 и поле ввода LineEdit1. После ввода значения, следует нажать на кнопку и в окно сообщений будет выведено только что введенное значение.

function on_button(buttonName) // обработчик нажатия кнопки
{
        if(buttonName=="Button1") // Button1 - имя кнопки, данное ей в дизайнере
        {
                // Получаем значение поля LineEdit1 экранной формы
                str = Value("LineEdit1");
                
                // Выводим в окно сообщений, полученное значение
                StatusMessage(str); 
        }
}

Перекрестные ссылки aWidget::value().

QVariant aForm::DBValue ( const QString &  name  )  [slot]

ScriptAPI. Возвращает значение атрибута <name> бизнес объекта Ананаса.

Предназначен для использования в контексте экранной формы редактирования бизнес объекта. Или, говоря по другому, в модуле экранной формы. Тип возвращаемого значения такой же, как задан в метаданных у соответствующего атрибута бизнес объекта. Для поля типа Каталог или Документ функция вернет число (id). Функция необходима, если нужно заполнять поля сложных типов. Для остальных случаев можно использовать aForm::Value(), обеспечивающее доступ к значению виджета экранной формы, в контексте которой исполняется Скрипт.

Аргументы:
name - Имя атрибута бизнес объекта, как задано в метаданных.
Пример кода для размещения в модуле экранной формы. Экранная форма содержит одну кнопку с именем Button1. При нажатии на кнопку в окно сообщений будет выведено значение атрибута "Покупатель" редактируемого бизнес объекта.

function on_button(buttonName) // обработчик нажатия кнопки
{
        if(buttonName=="Button1") // Button1 - имя кнопки, данное ей в дизайнере
        {
                // Получаем значение атрибута "Покупатель" редактируемого бизнес объекта
                contragent = DBValue("Покупатель");
                
                // Выводим в окно сообщений, полученное значение
                StatusMessage(contragent); 
        }
}

Перекрестные ссылки aLog::print() и Widget().

int aForm::SetValue ( const QString &  name,
QVariant  value 
) [slot]

ScriptAPI. Устанавливает значения виджетов экранной формы.

См. также:
aWidget::setValue()
Аргументы:
name - Имя виджета.
value - Значение виджета. Для сложных типов (Документ,Каталог) должен использоваться идентификатор. Если идентификатор недоступен, используйте функция SetObjValue(), которая принимает в качестве параметра ссылку на объект.

Перекрестные ссылки aWidget::setValue().

int aForm::SetObjValue ( const QString &  name,
aObject value 
) [slot]

ScriptAPI. Устанавливает значения виджетов формы сложных типов (aDocument, aCatalogue).

Обычно для установки значения используют SetValue(...)

См. также:
SetValue(...)
Аргументы:
tname - Имя виджета.

Перекрестные ссылки aWidget::setObjValue().

void aForm::SetColumnReadOnly ( const QString &  tname,
int  numCol,
bool  ro 
) [slot]

ScriptAPI. Устанавливает для столбца таблицы флаг только чтение.

Когда установлен этот флаг, пользователь не может редактировать значения в этом столбце.

Аргументы:
tname - Имя таблицы.
numCol - Номер столбца.
ro - Значение флага `только чтение'.

Перекрестные ссылки aLog::print() и Widget().

int aForm::ColIndex ( const QString &  tname,
const QString &  colname 
) [slot]

ScriptAPI. Возвращает индекс столбца таблицы tname по его имени в метаданных.

Аргументы:
tname - Имя таблицы.
colname - Имя столбца.
Возвращает:
Индекс столбца.

Перекрестные ссылки wDBTable::getDefFields(), aLog::print() и Widget().

int aForm::TabCount ( const QString &  tname  )  [slot]

ScriptAPI. Возвращает количество строк в табличном виджете wDBTable.

Если табличный виджет не является объектом класса wDBTable, метод запишет в лог сообщение об ошибке и вернет 0.

Аргументы:
tname - Имя таблицы.
Возвращает:
- Количество строк в таблице.

Перекрестные ссылки aLog::print() и Widget().

QVariant aForm::TabValue ( const QString &  tname,
int  row,
int  col 
) [slot]

ScriptAPI. Возвращает значение ячейки табличного виджета wDBTable.

Если табличный виджет не является объектом класса wDBTable, метод запишет сообщение об ошибке в лог и вернет строку "Unknown". То есть он предназначен только для работы с таблицами привязанными (binded) к табличным частям бизнес объектов Ананаса. Если в ячейке хранится сложный тип данных (Документ, Элемент справочника) будет возвращен уникальный идентификатор объекта, а не его текстовое представление, которое видит пользователь. Для получения текстового представления сложного объекта воспользуйтесь методом aForm::TabDBValue.

Аргументы:
tname - имя виджета
row - индекс строки таблицы
col - индекс столбца таблицы
Возвращает:
значение ячейки табличного виджета
См. также:
aForm::TabDBValue(...)

QVariant aForm::TabDBValue ( const QString &  tname,
int  row,
int  col 
) [slot]

ScriptAPI. Возвращает значение ячейки табличного виджета wDBTable для сложного типа данных.

Если табличный виджет не является объектом класса wDBTable, метод запишет сообщение об ошибке в лог и вернет строку "Unknown". То есть он предназначен только для работы с таблицами привязанными (binded) к табличным частям бизнес объектов Ананаса. В отличие от aForm::TabValue, который вернет числовой идентификатор, в случае, если ячейка имеет сложный тип данных, aForm::TabDBValue вернет текстовое представление, которое видит в таблице пользователь.

Аргументы:
tname - имя виджета
row - индекс строки таблицы
col - индекс столбца таблицы
Возвращает:
значение ячейки табличного виджета
См. также:
aForm::TabValue(...)

void aForm::TabNewLine ( const QString &  tname  )  [slot]

ScriptAPI. Добавляет новую строку в табличный виджет wDBTable.

Аргументы:
tname - имя виджета

Перекрестные ссылки wDBTable::lineInsert(), aLog::print() и Widget().

void aForm::SetTabValue ( const QString &  tname,
const QString &  colname,
int  row,
QVariant  value 
) [slot]

ScriptAPI. Задает значение ячейки табличного виджета wDBTable.

Аргументы:
tname - имя таблицы
colname - имя столбца
row - номер строки
value - значение

Перекрестные ссылки aLog::print(), aWidget::uid() и Widget().

int aForm::SignIn (  )  [slot]

ScriptAPI. Проводит (регистрирует) документ.

Вызывает функцю on_conduct() кода Ананас.скрипта модуля экранной формы. В скрипте вы можете проверить условия проведения документа, и, если они не выполняются, вернуть в функции false. Если функция возвращает false, то отметка о проведении не ставится.

Перекрестные ссылки aWidget::dataObject(), aObject::IsConducted(), aLog::print(), aEngine::project и aWidget::TurnOn().

Используется в turn_on().

int aForm::SignOut (  )  [slot]

ScriptAPI. Отменяет проведение (регистрацию) документа.

На самом деле ничего не делает. Отмена проведения производится при открытии документа.

Используется в turn_off().

void aForm::SetReadOnly ( bool  status  )  [slot]

ScriptAPI. Устанавливает флаг "только чтение".

Когда установлен этот флаг, запрещается редактирование полей формы, и сохранение изменений в базу.

Аргументы:
status - Новое значение флага только чтение.

Перекрестные ссылки aLog::print() и aWidget::SetReadOnly().

Используется в init() и aEngine::openForm().

bool aForm::IsReadOnly (  )  [slot]

ScriptAPI. Возвращает значение флага "только чтение".

Возвращает:
true если форма открыта в режиме только чтение.

int aForm::GetMode (  )  [slot]

ScriptAPI. Получение режима открытия формы.

Возвращает:
0 - новая, 1 - редактирование, 2- просмотр.

- режим открытия формы

QString aForm::Propis ( QString  val,
bool  need_kopeyki = true,
bool  male = true,
const QString &  end1 = "рублей",
const QString &  end2 = "рубль",
const QString &  end3 = "рубля" 
) [slot]

Конвертирует число в его текстовое представление c указанием единиц измерения.

Параметры позволяют настроить вид результата. По умолчанию валюта - рубли, копейки выводятся.

примеры использования:

  • Propis("20301.34") = Двадцать тысяч триста один рубль 34 копейки
  • Propis("20301.34", false) = Двадцать тысяч триста один рубль
  • Propis("20301.34", false, false, "штук", "штука", "штуки") = Двадцать тысяч триста одна штука
  • Propis("2", false, true, "слонёнков", "слонёнок", "слонёнка") = Два слонёнка
  • Propis("5", false, false, "мартышек", "мартышка", "мартышки") = Пять мартышек
  • Propis("38.5", false, true, "попугаев", "попугай", "попугая") = Тридцать восемь попугаев
пример неправильного использования:
  • Propis("38.5", true, true, "попугаев", "попугай", "попугая") = Тридцать восемь попугаев 50 копеек
Аргументы:
val - число для конвертирования
need_kopeyki - записывать в результат копейки (по умолчанию - да)
male - конвертируемая единица - мужского рода (по умолчанию - да)
end1 - окончание для нуля конвертируемых единиц (по умолчанию - `рублей')
end2 - окончание для одной конвертируемой единицы (по умолчанию - `рубль')
end3 - окончание для двуx конвертируемых единиц (по умолчанию - `рубля')
Возвращает:
- текстовое представление числа
См. также:
Propis()

Перекрестные ссылки aService::number2money().

QString aForm::MoneyToText ( QString  amount,
QString  currency 
) [slot]

Конвертирует числовое представление денег в пропись с учетом указанной валюты.

Аргументы:
amount - сумма денег для преобразование в пропись.
currency - строка с обозначением валюты. Допустимые значения: "RUR" - рубль, "USD" - доллар, "EUR" - евро.
Возвращает:
значение суммы прописью.

Перекрестные ссылки aService::number2money().

QString aForm::ConvertNumber2MoneyFormat ( double  number  )  [slot]

Возвращает значение атрибута формы.

Аргументы:
name - Имя атрибута. aDataField* aForm::getAttribute(const QString &name) { QString oname, aname; aWidget *w = mainWidget; QVariant v; aDataField *f = 0;
oname = name.section(".",0,0); aname = name.section(".",1); if ( oname.isEmpty() ) aname = oname; else { } v = w->value( aname ); f = new aDataField( this, aname ); return f; }

Устанавливает значение атрибута формы.

*Not implemented*

Аргументы:
name - Имя атрибута. int aForm::setAttribute(const QString &name, aDataField *value) { return 1; }
ScriptAPI. Конвертирует число в денежный формат (#0.00 :) ). Используется для вывода на печать. Для конвертирования числа в текстовое представление используйте Propis()

Аргументы:
number - число для конвертирования
Возвращает:
- округленное до 2-х цифр после запятой число
См. также:
Propis()

Перекрестные ссылки aService::convertNumber2MoneyFormat().

QString aForm::ConvertDateFromIso ( const QString &  ISODate  )  [slot]

ScriptAPI. Конвертирует дату в локальный формат. Используется для вывода на печать.

Все функции работы с датой оперируют датой в ISO формате. (yyyy-MM-ddThh:mm:ss) Данная функция предназначена для конвертации такой даты в читаемый вид.

Аргументы:
ISODate - дата в ISO формате (yyyy-MM-ddThh:mm:ss)
Возвращает:
- дату в локальном формате

Перекрестные ссылки aService::Date2Print().

QString aForm::EndOfDay ( const QString &  ISODate  )  [slot]

ScriptAPI. Возвращает дату-время на конец дня.

Аргументы:
ISODate - строка, содержащая дату в формате ISO (YYYY-MM-DD).
Возвращает:
- дату вида yyyy-mm-ddT23:59:59

void aForm::SelectByCurrent ( aObject doc  )  [slot]

ScriptAPI. Используя идентификатор редактируемого виджетами формы документа, настраивает объект aDocument на доступ к документу с таким же идентификатором.

То есть к тому же документу. Используется в Ананас.Скрипте для передачи ссылки на документ в другие объекты. Например в регистры. Для примера смотри код на Ананас.Cкрипте, отрабатываемый при проведении Приходной накладной в бизнес схеме Inventory.

Аргументы:
doc - документ, который необходимо настроить.
Возвращает:
void.

Перекрестные ссылки aLog::print(), aObject::select() и aWidget::uid().

Используется в SetCurrent().

aObject * aForm::Current (  )  [slot]

ScriptAPI. Возвращает ссылку на бизнес объект, редактируемый данной экранной формой.

По свему назначению метод аналогичен SelectByCurrent()

Возвращает:
- текущий объект формы
См. также:
SelectByCurrent()

Перекрестные ссылки aWidget::dataObject().

QWidget * aForm::Widget ( QString  name  )  [slot]

ScriptAPI. Возвращает указатель на виджет по его имени.

Ничего не делает.

char* aForm::formMetaObjectId(QString filename){ if (filename==""){ } return aot_doc; return ""; }

Очень полезная функция для работы с QT виджетами, находящимися в экранной форме. Используя этот метод, можно получить доступ к методам любого виджета, лежащего в форме. ВАЖНО! Из Ананас скрипта вы сможете обратиться только к публичным слотам и свойствам виджета. Публичные методы виджета из Ананас скрипта недоступны. Документацию по свойствам и методам QT виджетов смотрите на сайте http://trolltech.com

        // допустим в экранной форме есть виджет myCheckBox, являющийся экземпляром класса QCheckBox

        var myBox = Widget("myCheckBox"); //возвращает указатель на объект
        if ( myBox.checked ) {          // Проверяем значение свойства checked
                sys.Message(0, "Yes" );
        } else {
                sys.Message(0, "No" );
        }

        // К сожалению мы не имеем доступа к методам  setChecked() и isChecked(), так как они не являются публичными слотами. 
См. также:
aWidget::Widget()

Перекрестные ссылки aWidget::Widget().

Используется в ColIndex(), DBValue(), SetColumnReadOnly(), SetTabValue(), TabCount() и TabNewLine().

void aForm::initWidget ( QWidget *  widget,
aDatabase adb 
) [protected, virtual]

Инициализирует объекты, которые не унаследованы от aWidget, но требуют инициализации, например wDBTable.

Используется в initContainer().

void aForm::initContainer ( aWidget widget,
aDatabase adb 
) [protected, virtual]

Инициализирует все виджеты, унаследованные от aWidget

Перекрестные ссылки aWidget::createToolBar(), aWidget::engine, aWidget::init(), initWidget() и aWidget::isContainer().

Используется в init().


Объявления и описания членов классов находятся в файлах:

Документация по Ananas Library. Последние изменения: Mon Jul 14 11:53:55 2008. Создано системой  doxygen 1.5.5