Отчеты. Рамки
Скачать (rar-файл; Размер - 5203)Обсудить в форуме
Описание
Пример состоит из класса TcGrid, позволяющего получать любой символ рамки, и реализации TcGrid при выводе произвольного текста в рамке (TGrdText).
Класс TcGrid имеет один метод pv(Par[,Col][,Row]), где
Par - двоично-десятичный код символа рамки (число). Принцип кодирования - в зависимости от расположения частей символа рамки по сторонам света: запад-север-юг-восток, например
1111 - крест
1001 - горизонтальная линия
0110 - вертикальная линия
0000 - пробел;
Col,Row - флаги двойной линии символа рамки по вертикали и по горизонтали соответственно = 1 (по умолчанию(0) - одинарная линия).
В классе TGrdText метод pbR (text) оформляет строку текста в рамку (каждому слову - отдельную ячейку).
- Чтобы выполнить код, необходима версия RSL не ниже 893.
- Для серъёзного использования в отчетах вышеописанного кода требуется дальнейшая доработка.
Класс TcGrid имеет один метод pv(Par[,Col][,Row]), где
Par - двоично-десятичный код символа рамки (число). Принцип кодирования - в зависимости от расположения частей символа рамки по сторонам света: запад-север-юг-восток, например
1111 - крест
1001 - горизонтальная линия
0110 - вертикальная линия
0000 - пробел;
Col,Row - флаги двойной линии символа рамки по вертикали и по горизонтали соответственно = 1 (по умолчанию(0) - одинарная линия).
В классе TGrdText метод pbR (text) оформляет строку текста в рамку (каждому слову - отдельную ячейку).
- Чтобы выполнить код, необходима версия RSL не ниже 893.
- Для серъёзного использования в отчетах вышеописанного кода требуется дальнейшая доработка.
Текст примера
import "l_bxline"; macro pTestcGrid (o,c,r) [Test TcGrid. DoubleCol=# DoubleRow=#](piVnU(c),piVnU(r)); [#](o.pv(11 ,c,r) + o.pv(1011,c,r) + o.pv(1010,c,r)); [#](o.pv(111 ,c,r) + o.pv(1111,c,r) + o.pv(1110,c,r)); [#](o.pv(101 ,c,r) + o.pv(1101,c,r) + o.pv(1100,c,r)); [#](o.pv(1001,c,r) + o.pv + o.pv(110 ,c,r)); [ ] end; macro pTestcGrAll var o = TcGrid; pTestcGrid(o); pTestcGrid(o,1); pTestcGrid(o,0,1); pTestcGrid(o,1,1); end; class TGrdText (g,c) var aL, bF = True, oG = g, iC = c; macro paLen(a) var t=aL,i=a.Size; aL=pTA; while (pvDec(i)+1) al(i)=StrLen(a(i))+1 end; Return t end; macro pbR(s) var a = pasWord (s), b = paLen(a); if (bF) bF = False end; [#](psLineGr(oG,b,aL,ic)); [#](TsLnTxtGr(oG,a,ic)) end; macro Destructor if (not bF) [#](psLineGr(oG,aL,null,ic)) end end end; macro pTestGrTxt (c) var o = TGrdText(TcGrid,c); o.pbR("жертвам рамок"); o.pbR("привет от RSL"); end; pTestcGrAll; pTestGrTxt; pTestGrTxt(1);