Модуль RsFrm download предназначен для печати данных в файл с использованием модуля RSODBC. Для печати создается файл шаблонов печати. Файл может содержат один или несколько шаблонов. Шаблоны представляют собой набор тегов, каждый из которых начинается с новой строки. Каждый шаблон начинается с тега FORM и заканчивается тегом END. После тега FORM должен идти тег FONT, который устанавливает базовый шрифт формы, на основании которого расчитываюся все базовые размеры формы. Далее следует произвольный набор тегов. Для связывания данных и формы используется метод RsAdd, которому в качестве параметра передается открытый Recordset. При этом первому recordset присваивается имя 'A', а последующим 'B'..'Z'. Если форма отображает таблицу TABLE, то recordset 'A' связывается с ней. Если таблицы нет, то все recordset равноправны. Положение распечатываемых данных на странице определяется тегом BOX, в котором размеры задаются в миллиметрах. А выводимые данные тегом TEXT, который помимо текста может содержать ссылки на recordset [B!DATA] или переменные бейсика [Summa], а так-же любые функции dBasic. Между этими тегами может стоять тег FONT, который задает шрифт для тега TEXT. Если форма содержит таблицу, то она разбивается на две части, до и после таблицы. Все размеры в первой части формы задаются от левого-верхнего угла листа, а во второй от нижнего левого угла таблицы. Если перед таблицей стоит тег FONT, то этот шрифт используется при печати содержания таблицы.
Пример:
FORM 5 FONT Pragmatica,8 BOX 0,0,60,5 TEXT LEFT {[B!BANK]} BOX 0,5,40,10 TEXT LEFT {Выписка за [B!DATA]} BOX 40,5,150,10 TEXT LEFT {Счет N [B!RS]} BOX 0,10,40,15 FONT Pragmatica,8,Bold TEXT LEFT {Лицево пассив} BOX 40,10,150,15 TEXT LEFT {[B!PNAME] [B!INN]} BOX 0,15,90,20 TEXT RIGHT {Входяще сальдо:} BOX 90,15,150,20 TEXT RIGHT {[B!BRUB]} TITLE DATA,20,{Дата} TITLE BIK,25,{Код\nбанка} TITLE RS,25,{МФО} TITLE NOMER,20,{Номер\nдокумента} TITLE RDEB,30,{Обороты\nдебет},1 TITLE RKRD,30,{Обороты\nкредит},1 TABLE BOX 0,0,90,5 TEXT RIGHT {Исходящее сальдо:} BOX 90,0,150,5 TEXT RIGHT {[B!ERUB]} END
Теги шаблона:
BOX- установка зоны печати.
FONT- установка текущего шрифта.
TEXT- установка текста для печати.
TITLE- задание заголовка таблицы.
TABLE- таблица.
Функции и методы модуля RsFrm:
Form- создает объект форма.
Close- уничтожает объект форма.
RsAdd- добавляет Recordset к форме.
Print- печатает форму на принторе.
Type- печатает на принторе или в файл.
Write- запись в файл по шаблону.
Назначение.Установка зоны печати.
BOX X1,Y1,X2,Y2[,STSRSBSL]
X1,Y1 - координаты левого верхнего угла в миллиметрах,
X2,Y2 - координаты правого нижнего угла в миллиметрах,
STSRSBSL - описатель рамки области.
Описание.Описатель рамки задает рамку ST-сверху, SR-справо, SB-снизу, SL-слева.
Пример:
BOX 0,10,40,15,SLST
Назначение.Установка текущего шрифта.
FONT FontName,FontSize[,Bold|Italic]
FontName - имя шрифта,
FontSize - размер шрифта,
Bold|Italic - тип шрифта.
Пример:
FONT Pragmatica,8,Bold
Назначение.Установка текста для печати.
TEXT [LEFT|RIGHT|CENTER] {sText}
sText - строка текста.
Описание.Текст может содержать ссылки на поля recordset и на переменные dBasic. При вводе текста перевод строки игнорируется, Для ввода специальных символов используется префикс '\', т.о. '\r'-CR, '\n'-LF, '\t'-TAB.
Пример:
TEXT LEFT {Грузополучатель: [C!NAME],\n[C!ADRES]}
Назначение.Задание колонки таблицы.
TITLE Field,Size,{sText}[,Flg]
Field - имя поля recordset,
Size - ширина колонки в миллиметрах,
sText - текст заголовка колонки,
Flg - высота подножья в строках или 0.
Описание.Для задания таблицы используется последовательность описаний колонок, которая завершается тегом TABLE. Если для колонки задана высота подножья и у recordset задано значение подножья колонки, то у таблицы распечатывается подножье с этими значениями.
Пример:
TITLE DATA,20,{Дата} TITLE BIK,25,{Код\nбанка} TITLE RS,25,{МФО} TITLE NOMER,20,{Номер\nдокумента} TITLE RDEB,30,{Обороты\nдебет},1 TITLE RKRD,30,{Обороты\nкредит},1 TABLE
Назначение.Таблица
TABLE
typedef struct { short len; char com; } FRMOBJ;, где len - задает размер структуры в байтах, а com - ее код. Каждая страница начинается с структуры FRMPAGE. typedef struct { short len; char com; /* # */ BYTE num; - номер страницы int width; - ширина страницы в пикселах int depth; - высота страницы в пикселах int cx; - ширина символа в пикселах int cy; - высота символа в пикселах } FRMPAGE; Далее записывается главный фонт страницы typedef struct { short len; char com; /* F */ BYTE size; - размер фонта char type; - тип фонта BYTE reserv; char name[1]; - имя } FRMFONT; Далее следует набор структур typedef struct { short len; char com; /* B */ BYTE border; - маска описания рамки RECT rc; - координаты области в пикселах } FRMBOX; и typedef struct { short len; char com; /* T */ char alig; - выравнивание (L,R,C) char text[1]; - текст } FRMTEXT; В конце записывается структура FRMOBJ с кодом 'E'. Для описания таблицы используется следующая последовательность. Записывается заголовок typedef struct { short len; char com; /* H */ BYTE num; - номер колонки начиная с 1 RECT rc; - размер квадрата для вывода заголовка char text[1]; - текст заголовка } FRMHEAD; Далее идут L-строки таблицы typedef struct { short len; char com; /* L, R */ BYTE num; - номер колонки WORD format; - выравнивание int top; - кордината верха int bottom; - координата низа char text[1]; - текст } FRMLINE; Которые завершаются R-строкой, т.е. подножьем, здесь значения top и bottom выдаются с некоторым отступом. Завершает отображения таблицы структура typedef struct { short len; char com; /* G */ int header; - высота заголовка int footer; - высота подножья RECT rc; } FRMGRID; все параметры этой структуры игнорируются, но они заполняются в процессе отображения и затем используются при редактирование данных.
Назначение.Создает объект форма.
Form( LONG<hWnd>, STRING<FileName>, LONG<nForm> ) LONG<pClass>
hWnd - описатель родительского окна,
FileName - имя файла шаблонов,
nForm - номер шаблона.
Описание.Функция создает объект форма. Если nForm равен 0, то строка FileName рассматривается как сама форма.
Пример:
SET FRM= RSFRM.Form( HWND, PRGDIR+"SKLAD.FRM", 1 ) IF EMPTY(FRM) THEN END FRM.RsAdd( A ) FRM.RsAdd( B ) FRM.RsAdd( C ) Title="Счет N "+Number+" от "+DATE(Date) IF $File THEN File= FRM.Type( Title, "FILE" ) IF NOT $File THEN File=0; FRM.Print( Title ) ERASE FRM.Close
Назначение.Уничтожает объект форма.
Close
Пример.
ERASE FRM.Close
Назначение.Добавляет Recordset к форме.
RsAdd( OBJECT<Rs> ) BOOL
Rs - Recordset
Описание.Метод добавляет открытый Recordset к объекту форма. Каждый новый Recordset получает очередное имя в диапазоне 'A'..'H'. Первый Recordset может быть использован для печати таблицы.
Пример.
FRM.RsAdd( A ) FRM.RsAdd( B ) FRM.RsAdd( C )
Назначение.Печать формы на принторе.
Print( STRING<Title> ) BOOL
Title - строка заголовка формы.
Описание.Метод печатает форму на принторе. В процессе печати на экране отображается информационное окошко со строкой Title и номером текущей страницы. Отступы от краев определяются установками принтера (SETMARGIN).
Пример.
Title="Счет N "+Number+" от "+DATE(Date) FRM.Print( Title )
Назначение.Печать на принторе или в файл.
Type( STRING<Title>, STRING<Options> ) LONG
Title - строка заголовка формы. Options - строка опций.
Описание.Метод печатает форму на принторе или в файл. Отступы от краев определяются установками принтора (SETMARGIN). В процессе печати на экране отображается информационное окошко со строкой Title и номером текущей страницы. Строка опций может содержать:
Пример.
Title="Счет N "+Number+" от "+DATE(Date) File=FRM.Type( Title, "FILE|DEFAULT" )
Назначение.Запись в файл по шаблону.
Write( STRING<Dst>, STRING<Src> ) BOOL
Dst - имя файла приемника.
Src - имя файла шаблона.
Описание.Метод производит запись в файл на основание шаблона. Шаблон представляет собой обычный текстовый файл в котором в квадратных скобках указываются ссылки на переменные dBasic.
Пример.Шаблона.
Данные о клиенте: Телефон:[Phone] Адрес:[Address]Пример.Использования.
SET FRM= RSFRM.Form( HWND, "END", 0 ) IF EMPTY(FRM) THEN END ok=FRM.Write( "Test.dst", "Test.src" ) ERASE FRM.Close