Модуль dbDlg download содержит ряд вспомогательных функций:
Указатель
PBOPEN- открывает окно указателя.
PBPOSITION- устанавливает текущую позицию и диапазон.
PBTEXT- устанавливает текст указателя.
PBCLOSE- закрывает окно указателя.
Анимированное окно ожидания
WDOPEN- открывает окно.
WDTEXT- устанавливает текст окна.
WDCLOSE- закрывает окно.
Вспомогательные функции
WRITE_MONEY- деньги прописью.
CALC_TRANSLATE- перевод скобочной арифметики в стековую нотацию.
TEXT_ARANGE- автоформатирование текста.
VOLAPUK_TRANSLATE- перевод текста из кодировки Волапюк.
Оконные объекты
EDITDATE- окно для редактирования даты.
Назначение.Открывает окно указателя.
PBOPEN( LONG<hWnd>, STRING<sTitle> ) LONG<hPB>
hWnd- описатель родительского окна.
sTitle- загаловок окна.
Описание.При вызове функции отображается окно вида:
в котором отображается указатель.
При этом происходит деактивизация родительского окна.
Функция возвращает описатель созданного окна.
Положение указателя задается функцией PBPOSITION.
Пример:
hPB=DBDLG!PBOPEN($HWND,"Поиск") FOR i=1 TO 100 IF DBDLG!PBPOSITION( hPB ) THEN EXIT ... NEXT DBDLG!PBCLOSE( hPB )
Назначение.Устанавливает текущую позицию и диапазон.
PBPOSITION( LONG<hPB>, LONG<Pos>, LONG<Range> ) BOOL
hPB - описатель окна указателя.
Pos - позиция указателя.
Range - диапазон указателя.
Описание.Функция устанавливает позицию и диапазон указаетеля. Если до вызова функции была нажата кнопка СТОП, то функция возвращает истину, иначе ложь.
Назначение.Устанавливает заголовок окна указателя.
DBDLG!PBTEXT( LONG<hPB>, STRING<sTitle> )
hPB - описатель окна указателя.
sTitle- загаловок окна.
Назначение.Закрывает окно указателя.
PBCLOSE( LONG<hPB> )
hPB - описатель окна указателя.
Назначение.Открывает окно.
WDOPEN( LONG<hWnd>, STRING<sAviFile> ) LONG<hWD>
hWnd- описатель родительского окна.
sAviFile- имя avi-файла.
Описание.При вызове функции отображается окно вида:
в котором проигрывается avi-файл.
При этом происходит деактивизация родительского окна.
Функция возвращает описатель созданного окна.
Пример:
hWD=DBDLG!WDOPEN( $HWND, "Findfile.avi" ) FOR i=1 TO 100 IF DBDLG!WDTEXT( hWD, "Состояние:"+STR(i) ) THEN EXIT DELAY 100 NEXT DBDLG!WDCLOSE( hWD )
Назначение.Устанавливает текст окна.
WDTEXT( LONG<hWD>, STRING<sTitle> ) BOOL
hWD - описатель окна.
sTitle - текст окна.
Описание.Функция устанавливает текст окна. Если до вызова функции была нажата кнопка СТОП, то функция возвращает истину, иначе ложь.
Назначение.Закрывает окно.
WDCLOSE( LONG<hWD> )
hWD - описатель окна.
Назначение.Функция возвращает сумму прописью.
WRITE_MONEY( STRING<Rub> ) VARIABLE
Rub - число ввиде строки.
Описание.Функция возвращает сумму прописью принимая на входе число. Во избежания переполнения число передается ввиде строки.
Пример.
Res=DBDLG!WRITE_MONEY("1111.11") Результат:Одна тысяча сто одиннадцать рублей 11 копеек
Назначение.Перевод скобочной арифметики в стековую нотацию.
CALC_TRANSLATE( STRING<Formula>, STRING<Names> ) VARIABLE
Formula - текст формулы.
Names - список разрешенных имен переменных через разделитель |.
Пример.
sFormula="SUMMA|SUM2|SUM1|SUM0|KURS|NDS|NC1|NC2|NT1|NT2" Formula= GET(104) IF LEN(Formula)=0 GOTO ERR01 Formula= DBDLG!CALC_TRANSLATE( Formula, sFormula ) IF LEN(Formula)=0 THEN END 0
Назначение.Автоформатирование текста.
TEXT_ARANGE( STRING<Text>, LONG<Len> ) VARIABLE
Text - текст.
Len - допустимая длинна.
Описание.Функция разбивает текст на строки допустимой длинны используя в качестве точек вставки дополнительных LF пробелы между словами текста.
Пример.
Res=DBDLG!TEXT_ARANGE( "Данный текст будет разбит на строки", 10 ) Результат: Данный текст будет разбит на строки
Назначение.Перевод текста из кодировки Волапюк.
VOLAPUK_TRANSLATE( STRING<Text> ) VARIABLE
Text - текст.
Назначение.Окно для редактирования даты.
Описание.Окно данного класса следует добавить в ресурс окна диалога, как.
CONTROL "00.00.00", 101, "EDITDATE", 0 | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_BORDER| WS_TABSTOP, 51, 6, 40, 12
Для регистрации класса EDITDATE в код следует добавить оператор DEF DBDLG.
Для инициализации следует передать желаемую дату PUT 101,DATE(DATE(-1)).
Если нам необходим год со столетием, то следует это указать т.о. PUT 101,DATE(DATE(-1),"dd.MM.yyyy") или PUT 101,"00.00.0000").
Чтение результата осуществляется функцией Date=DATE(GET(101)).
Если фокус ввода находится в окне, то нажатие клавишы ПРОБЕЛ приводит к установки текущей даты,
а нажатие клавишы DELETE сбросу даты в 0.
Пример.
DEF DBDLG ... END EDIT11: PUT 101,DATE(Date,"dd.MM.yyyy") END EDIT21: Date=DATE(GET(101)) END