ПОЛЕЗНЫЕ МЕЛОЧИ

В данном разделе я постараюсь собрать и рассказать о полезных вспомогательных процедурах, функция и инклюд-файла, применяемых в АБС Бисквит.


message - выводит окно сообщения в центре экрана, альтернативное стандартному (функция message).

Синтаксис:

{message <Текст сообщения>}

или

{message
    &text=<Текст сообщения>
    &color=<Цвет окна>
    &alert-box=<MESSAGE,QUESTION,INFORMATION,ERROR или WARNING>
    &buttons=<ok или yes-no>
    &title=<Заголовок окна>
    &beep=<Звуковой сигнал при появлении окна (yes/no)>
    &update=<логич. переменная>
}


messmenu - выводит сообщение с пунктами меню под ним.

{messmenu  
    &choices=<список заголовков пунктов меню, разделитель запятая>
    &text=<текст сообщения>
    &title=<заголовок сообщения>
    &row=<номер строки с которой будет выводится сообщение>
    &update=<номер пункта меню по умолчанию>
}

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


{justasec} и {justamin} - выводят сообщения "Секундочку..." и "Минуточку..." соответственно в нижнем левом углу окна.


tmprecid.def - создает временную таблицу tmprecid с ссылками на отмеченные записи в браузерах. 

Аргументы:

&NSH=YES - таблица объявляется как NEW SHARED;
&SH=YES - таблица объявляется как SHARED;
&NGSH=YES - таблица объявляется как NEW GLOBAL SHARED.

Пример:

{tmprecid.def}
FOR EACH tmprecid,
FIRST cust-corp WHERE RECID(cust-corp) EQ tmprecid.id NO-LOCK:
   DISPL cust-corp.short-name.
END.

calend.p - осуществляет вывод экранной формы календаря для выбора даты.

{globals.i}
DEFINE VARIABLE iDate AS DATE FORMAT "99/99/9999" NO-UNDO.
DEFINE FRAME frame1 iDate LABEL "ДАТА"
WITH SIDE-LABELS CENTERED OVERLAY TITLE COLOR brigth-white "Выберите дату".
iDate:SCREEN-VALUE = STRING(TODAY).
ON "F1" OF iDate DO:
    RUN calend.p.
    IF (LASTKEY = 10 OR LASTKEY = 13) AND pick-value <> ? THEN
    SELF:SCREEN-VALUE = pick-value.
    RETURN NO-APPLY.
END.
ENABLE ALL WITH FRAME frame1.
WAIT-FOR LEAVE OF iDate.

getdate.i - вызывает диалог запроса даты.

{getdate.i
   
&DateLabel=<метка даты>
    &DateHelp=<текст подсказки даты внизу окна>
    &AddPostUpd=<программный код, выполняемый после присвоения значения>
}

&AddPostUpd можно использовать для контроля введенного значения даты. Например, если необходимо запретить пользователю указать дату позднее текущий.

{getdate.i
   &AddPostUpd="IF end-date > TODAY THEN
                DO:
                 MESSAGE 'Дата не может быть позднее текущей'
                   VIEW-AS ALERT-BOX.
                   UNDO, RETRY.
                END.
              "
}

Таким образом, при попытке пользователя указать дату позднее текущей ему будет выведено сообщение с предупреждением о невозможности такого действие, после чего пользователь будет возвращен обратно для корректного указания даты.                         

Результат записывается в переменную end-date типа DATE


getdates.i - вызывает диалог запроса периода.

{getdates.i
    &BegLabel=<метка даты начала периода>
    &BegHelp=<текст подсказки даты начала периода>
    &EndLabel=<метка даты окончания периода>
    &EndHelp=<текст подсказки даты окончания периода>
    &TitleLabel=<заголовок окна>
}

Результат записывается в:
beg-date - Дата начала периода;
end-date - Дата конца периода;

beg-date, end-date - тип DATE.


{empty <table_name>} - очищает таблицу с именем <table_name>


additem.i - формирует список с разделителем запятая.

Аргументы:

{1} - список;
{2} - добавляемый элемент в список.


additem2.i - формирует список с указанным разделителем.

Аргументы:

{1} - список;
{2} - добавляемый элемент в список;
{3} - разделитель.


additem3.i - формирует список с указанным по ASCII коду разделителем.

Аргументы:

{1} - список;
{2} - добавляемый элемент в список;
{3} - ASCII код разделителя.


delitem.i - удаляет элемент из списка с разделителем запятая. Требует предварительного объявления переменной counter

DEF VAR counter AS INT NO-UNDO.

Аргументы:

{1} - список;
{2} - удаляемый элемент из списка .


delitems.i удаляет элемент из списка с указанным разделителем.

Аргументы:

{1} - список;
{2} - удаляемый элемент из списка;
{3} - разделитель списка.


x-amtstr.p (Amt, ccode, IsRub, IsCop, OUTPUT AmtStr, OUTPUT IsCop) - сумма прописью.

  • Amt - сумма, тип DECIMAL;
  • ccode - код валюты,тип CHAR;
  • IsRub - флаг для добавления "рублей/долларов/Евро" в конце выходной строки, тип LOGICAL;
  • IsCop - флаг для добавления "копеек/центов/евроцентов". При значении ? копейки выводятся прописью, тип LOGICAL;
  • AmtStr - cтрока суммы прописью, тип CHAR;
  • DecStr - cтрока кол-во копеек цифрами, тип CHAR.

Пример:

DEF VAR iNum    AS DEC  NO-UNDO.
DEF VAR chNum AS CHAR NO-UNDO.
DEF VAR vAmtStr AS CHAR NO-UNDO.
DEF VAR vDecStr AS CHAR NO-UNDO.

iNum = 10.58.

RUN x-amtstr.p (iNum,
                "840",
                TRUE,
                TRUE,
                OUTPUT vAmtStr,
                OUTPUT vDecStr).

chNum = vAmtStr + ", " + vDecStr.

DISPL chNum FORMAT "x(78)".

Результат: Десять долларов США, 58 центов


procprop.p (iNum, OUTPUT chProc) - процент прописью.

  • iNum - число процентов, тип DECIMAL;
  • chProc - проценты прописью, тип CHAR.

Пример:

DEF VAR chProc AS CHAR NO-UNDO.

RUN procprop.p (10.85,
                OUTPUT chProc).

DISPL chProc FORMAT "x(78)".

Результат: Десять целых восемьдесят пять сотых процента

Вы здесь: Главная ИБС Бисквит БАЗОВЫЙ ПОЛЕЗНЫЕ МЕЛОЧИ