mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-05-17 06:06:00 -06:00
107 lines
No EOL
3.9 KiB
C++
107 lines
No EOL
3.9 KiB
C++
topic "RepGen - Short description and Tutorial";
|
||
[ $$0,0#00000000000000000000000000000000:Default]
|
||
[i448;a25;kKO9; $$1,0#37138531426314131252341829483380:structitem]
|
||
[l288;2 $$2,0#27521748481378242620020725143825:desc]
|
||
[0 $$3,0#96390100711032703541132217272105:end]
|
||
[{_}%EN-US
|
||
[ {{10000f0;t/25b/25@(113.42.0) [s0;%- [*@2;4 RepGen `- Очень простой генератор
|
||
отчетов (Короткое описание)]]}}&]
|
||
[s0;%- &]
|
||
[s1;%- [C class_][*C RepGen]&]
|
||
[s2; [3 RepGen `- Class Простого генератора отчетов]&]
|
||
[s0; &]
|
||
[s0;%- &]
|
||
[ {{10000F(128)G(128)@1 [s0;%- [* Короткое описание].]}}&]
|
||
[s0;2%- &]
|
||
[s0; [2 Это работает очень просто:]&]
|
||
[s0; [*2 RepGen][2 записывает QTF отчет по QTF шаблону.]&]
|
||
[s0; [2 Если RepGen встречает ##`-переменную
|
||
в шаблоне, то он заменяет ее на реальное
|
||
значение.]&]
|
||
[s0;2 &]
|
||
[s0; [2 Работа ][*2 RepGen ][2 управляется несколькими
|
||
][*2 CallBack`'][2 ами, которые свои для каждого
|
||
типа отчета. ]&]
|
||
[s0;2 &]
|
||
[s0; [2 Для каждого типа отчета могут быть
|
||
][*/2 несколько различных][2 шаблонов,
|
||
из которых Ваши пользователи могут
|
||
выбрать до выполнения отчета.]&]
|
||
[s3;2%- &]
|
||
[ {{10000F(128)G(128)@1 [s0;%- [* Tutorial]]}}&]
|
||
[s0;2%- &]
|
||
[s0; Немного подробнее.&]
|
||
[s0; &]
|
||
[s0; [* RepGen] может создавать отчет основанный
|
||
на qtf`-шаблонах. Другими словами, для
|
||
создания финального отчета типа этого:&]
|
||
[s0; &]
|
||
[ {{10000@1 [s0;= AddressBookXML2`+RepGen&]
|
||
[s0;= Test report&]
|
||
[s0;= [2 (Use UWord for Edit)]&]
|
||
[s0;= &]
|
||
[s0;= `"Simple table`"&]
|
||
[ {{2202:1959:2342:3497h1;b4/15 [s0;= [*+117 Name]]
|
||
:: [s0;= [*+117 Surname]]
|
||
:: [s0;= [*+117 Address]]
|
||
:: [s0;= [*+117 E`-mail]]
|
||
::b0/15 [s0;= Petr]
|
||
:: [s0;= Petrov]
|
||
:: [s0;= Moscow]
|
||
:: [s0;= petr`@petrovich.ru ]
|
||
:: [s0;= Ivan]
|
||
:: [s0;= Ivanov]
|
||
:: [s0;= Ekaterinburg]
|
||
:: [s0;= ivan`@ivanovich.ru ]
|
||
:: [s0;= Sidor]
|
||
:: [s0;= Sidorov]
|
||
:: [s0;= Kazan]
|
||
:: [s0;= sidor`@sidorov.ru ]
|
||
::t4/15-3 [s0;> TOTAL [*/ 3] ADDRESSES]
|
||
::t0/15-2 [s0;%- ]
|
||
::-1 [s0;%- ]
|
||
:: [s0;%- ]}}&]
|
||
[s0;= &]
|
||
[s0; ]}}&]
|
||
[s0; &]
|
||
[s0; [* Шаблон] для этого отчета должен быть
|
||
как этот:&]
|
||
[s0; &]
|
||
[ {{10000@1 [s0;= AddressBookXML2`+RepGen&]
|
||
[s0;= Test report&]
|
||
[s0;= [2 (Use UWord for Edit)]&]
|
||
[s0;= &]
|
||
[s0;= `"Simple table`"&]
|
||
[ {{2500:2500:2500:2500h1;b4/15 [s0;= [*+117 Name]]
|
||
:: [s0;= [*+117 Surname]]
|
||
:: [s0;= [*+117 Address]]
|
||
:: [s0;= [*+117 E`-mail]]
|
||
::b0/15 [s0;= ##BT ##NAME]
|
||
:: [s0;= ##SURNAME]
|
||
:: [s0;= ##ADDRESS]
|
||
:: [s0;= ##EMAIL ##ET]
|
||
::t4/15-3 [s0;> TOTAL [*/ ##TOTAL] ADDRESSES]
|
||
::t0/15-2 [s0;%- ]
|
||
::-1 [s0;%- ]
|
||
:: [s0;%- ]}}&]
|
||
[s0;= &]
|
||
[s0; ]}}&]
|
||
[s0; &]
|
||
[s0; Для работы с этим шаблоном надо объявить
|
||
объект типа [* RepGen].&]
|
||
[s0; &]
|
||
[s0; Затем Вам нужно создать несколько[*
|
||
callback`'ов], которые будут задавать логику
|
||
этого отчета и будут производить
|
||
подстановку реальных данных.&]
|
||
[s0; &]
|
||
[s0; Дополнительно Вы должны сделать
|
||
[* GUI интерфейс выбора правильного шаблона]
|
||
для этого отчета. Но это уже другая
|
||
история, В конечном счете в результате
|
||
выбора шаблона объект RepGen должен
|
||
получить содержимое qtf`-шаблона.&]
|
||
[s0; &]
|
||
[s0; &]
|
||
[s0; Эта статья на [^topic`:`/`/RepGen`/srcdoc`/RepGen`$en`-us^ Англий
|
||
ском]] |