diff --git a/official/4.33/Dealers.rus.txt b/official/4.33/Dealers.rus.txt
new file mode 100644
index 0000000..df6e733
--- /dev/null
+++ b/official/4.33/Dealers.rus.txt
@@ -0,0 +1,135 @@
+Дилеры
+
+ Россия
+
+ЗАО "Софткей"
+
+ Жители России, Украины, Белоруссии, Казахстана, Эстонии, Литвы, Латвии, Болгарии, Польши, Израиля могут приобретать лицензии у крупнейшего регистратора СНГ - ЗАО "Софткей" и оплатить их в местной валюте.
+
+129626, Россия, г. Москва, ул. Староалексеевская, д. 21, стр. 11, офис 411 Тел./факс (095) 775-1286 (многоканальный), (095) 991-7693
+
+www.softkey.ru
+
+
+ООО "Айбэйз", Москва
+
+ ООО "Айбэйз" (iBase)
+Россия, Москва, 1-ый Новокузнецкий переулок, д. 10, п. 2, к. 1.
+тел (095) 953-13-34
+http://shop.ibase.ru/russia.htm
+sales@ibase.ru
+
+
+ООО "Сфера"
+
+ ООО "Сфера"
+Россия, Самара, ул. Арцыбушевская, 13, 4 этаж
+тел (8462) 72-57-56
+http://www.sphere-ltd.ru
+info@sphere-ltd.ru
+
+
+компания "СофтЛайн", Москва
+
+ Allsoft.ru
+E-mail:info@allsoft.ru
+119991, г. Москва, ул. Губкина, д. 8, компания "СофтЛайн"
+Тел.: 8-800-200-2233
+
+
+ООО "Программ плюс"
+
+ ООО "Программ плюс"
+тел.: (0932) 41-18-53
+e-mail: plus@kodeks37.ru
+сайт: www.vcl-soft.ru
+Адрес:
+153000, г. Иваново
+ул. Почтовая,6-А, офис 105
+
+
+
+ООО "ЮСК:Дистрибьюция"
+
+тел.: (863) 236-0483
+факс: (863) 236-8383
+e-mail: info@uskd.ru
+сайт: www.uskd.ru www.softcatalog.ru
+Адреса:
+400000, Волгоград, Профсоюзная, 12
+350000, Краснодар, Селезнева, 84
+355000, Ставрополь, Доваторцев, 57/1
+344004, Ростов-на-Дону, 2-я Володарского, 76/23а
+
+
+Украина
+
+"Десктоп-Софт"
+
+контактное лицо: Виталий Лысенко;
+тел./факс: 0522-29-51-42
+e-mail: vlysenko@dswsoft.com
+
+
+ООО "СОФТПРОМ"
+
+тел./факс (044)242-53-00,
+zhdan@softprom.com
+http://www.softprom.com
+
+
+"I.T. Pro" Ltd.
+
+ 03039, Kiev
+av.40 let Oktyabrya 50 of.65
+tel.+380 44 258 0528
+tel.+380 44 264 0598
+tel.+380 44 264 4427
+tel.+380 67 502 4800
+tel.+380 97 936 2011
+http://www.itpro.kiev.ua/
+
+
+ЗАО "Софткей"
+
+ Жители России, Украины, Белоруссии, Казахстана, Эстонии, Литвы, Латвии, Болгарии, Польши, Израиля могут приобретать лицензии у крупнейшего регистратора СНГ - ЗАО "Софткей" и оплатить их в местной валюте.
+
+129626, Россия, г. Москва, ул. Староалексеевская, д. 21, стр. 11, офис 411 Тел./факс (095) 775-1286 (многоканальный), (095) 991-7693
+
+www.softkey.com.ua
+
+
+ Беларусь
+
+ ЗАО "Софткей"
+
+ Жители России, Украины, Белоруссии, Казахстана, Эстонии, Литвы, Латвии, Болгарии, Польши, Израиля могут приобретать лицензии у крупнейшего регистратора СНГ - ЗАО "Софткей" и оплатить их в местной валюте.
+
+129626, Россия, г. Москва, ул. Староалексеевская, д. 21, стр. 11, офис 411 Тел./факс (095) 775-1286 (многоканальный), (095) 991-7693
+
+www.softkey.by
+
+
+ Туркмения
+
+Хозяйственное общество "Инфоком"
+
+744000, Туркменистан, г. Ашгабат, ул. Азади, 65
+тел: (+993 12) 35-79-54, 35-25-76
+contact@in4com.com
+
+ Казахстан
+
+
+ ЗАО "Софткей"
+
+ Жители России, Украины, Белоруссии, Казахстана, Эстонии, Литвы, Латвии, Болгарии, Польши, Израиля могут приобретать лицензии у крупнейшего регистратора СНГ - ЗАО "Софткей" и оплатить их в местной валюте.
+
+129626, Россия, г. Москва, ул. Староалексеевская, д. 21, стр. 11, офис 411 Тел./факс (095) 775-1286 (многоканальный), (095) 991-7693
+
+www.softkey.kz
+
+
+
+
+
diff --git a/official/4.33/Dealers.txt b/official/4.33/Dealers.txt
new file mode 100644
index 0000000..100b191
--- /dev/null
+++ b/official/4.33/Dealers.txt
@@ -0,0 +1,405 @@
+Dealers
+
+ 1. United Kingdom
+ 1.1 QBS Software Ltd
+ 2. Germany
+ 2.1 BITA GmbH
+ 2.2 HK-Software
+ 3. Austria
+ 3.1 BITA GmbH
+ 4. Switzerland
+ 4.1 BITA GmbH
+ 5. Poland
+ 5.1 WebKomp
+ 5.2 Przedsiebiorstwo Komputerowo Obliczeniowe
+ 5.3 JSC "SoftKey"
+ 6. Czech
+ 6.1 Petr Zahradnik, Computer Laboratory
+ 6.2 HTK Pro s.r.o.
+ 7. Slovak
+ 7.1 HTK Pro s.r.o.
+ 8. Brazil
+ 8.1 EXPERTNET
+ 8.2 PRMAS SYSTEM
+ 9. South Korea
+ 9.1 DevTools Inc.
+ 9.2 Buysoft Inc.
+ 10. Taiwan, R.O.C.
+ 10.1 Crispin, Chen
+ 11. China
+ 11.1 Nora Xu
+ 11.2 CSTSOFT
+ 11.3 Chongqing Huidu Technology Co., Ltd.
+ 12. Nederland
+ 12.1 FastReport ook in Nederland verkrijgbaar
+ 13. Lithuania
+ 13.1 JSC "SoftKey"
+ 14. Latvia
+ 14.1 JSC "SoftKey"
+ 15. Estonia
+ 15.1 JSC "SoftKey"
+ 16. Bulgaria
+ 16.1 JSC "SoftKey"
+ 17. Colombia
+ 17.1 Luz Zapata Velasquez
+ 18. Latin America
+ 18.1 Danysoft
+ 19. Spain
+ 19.1 Danysoft
+ 20. Portugal
+ 20.1 Danysoft
+ 21. Israel
+ 21.1 Software Sources Ltd.
+
+
+
+ 1. United Kingdom
+
+ 1.1 QBS Software Ltd
+
+ QBS Software Ltd
+7 Wharfside
+Rosemont Rd
+Wembley HA0 4QB
+
+Tel +44 (0) 8456 580 580
+Fax +44 (0) 20 8902 7600
+email: sales@qbssoftware.com
+http://www.qbssoftware.com/FASTREPORT
+
+
+ 2. Germany
+
+ 2.1 BITA GmbH
+
+ BITA GmbH
+A-1070 Wien, Wimbergergasse 14/3-1-3
+E-mail: fastreport@bita.at
+Tel: +43 (1) 9832873
+Fax: +43 (1) 9832873-30
+www.bita.at
+Contact person: Robert Szuszkiewicz
+
+ 3. Austria
+
+ 3.1 BITA GmbH
+
+ BITA GmbH
+A-1070 Wien, Wimbergergasse 14/3-1-3
+E-mail: fastreport@bita.at
+Tel: +43 (1) 9832873
+Fax: +43 (1) 9832873-30
+www.bita.at
+Contact person: Robert Szuszkiewicz
+
+ 4. Switzerland
+
+ 4.1 BITA GmbH
+
+ BITA GmbH
+A-1070 Wien, Wimbergergasse 14/3-1-3
+E-mail: fastreport@bita.at
+Tel: +43 (1) 9832873
+Fax: +43 (1) 9832873-30
+www.bita.at
+Contact person: Robert Szuszkiewicz
+
+
+ 5. Poland
+
+ 5.1 WebKomp
+
+ WebKomp:
+info@webkomp.net
+ul. Sosnowskiego 3/18
+02-784 Warszawa
+Poland
+tel.: +48 501 232 256
+fax. +48 22 750 96 80
+
+http://www.webkomp.net
+
+ 5.2 Przedsiebiorstwo Komputerowo Obliczeniowe
+
+ Przedsiebiorstwo Komputerowo Obliczeniowe
+30-415 Krakow ul. Wadowicka 12
+fastreport@pko.pl
+tel : +48 12 296 52 22
+fax: +48 12 296 52 23
+mobile: +48 602 801 659
+http://www.laptop.net.pl
+http://www.laptop.net.pl/fastreport
+
+ 5.3 JSC "SoftKey"
+
+ Postal address: Zvezdny boulevard, 21, office 801,
+129085, Moscow, Russia
+
+Tel./ fax: (095) 215-66-13, 797-26-64
+
+www.softkey.net
+www.softkey.lt
+www.softkey.lv
+www.softkey.pl
+www.softkey.ee
+www.softkeybg.com
+email: sales@softkey.ru
+
+
+ 6. Czech
+
+ 6.1 Petr Zahradnik, Computer Laboratory
+
+ Petr Zahradnik, Computer Laboratory
+Obvodova 740/14, CZ-40007 Usti nad Labem, Czech Republic
+Phones: +420-47-5500610, +420-47-5501627
+Fax: +420-47-5511338
+WWW: http://www.clexpert.cz, http://www.zahradnik.cz
+E-Mail: clexpert@clexpert.cz, petr@zahradnik.cz
+ICQ: 21215917
+
+
+ 6.2 HTK Pro s.r.o.
+
+ HTK Pro s.r.o.
+Prosecka 76a, Praha 9
+http://www.dev-shop.cz, http://www.dev-shop.sk
+tel : +420-2-83880361, fax : +420-2-86891391
+
+
+ 7. Slovak
+
+ 7.1 HTK Pro s.r.o.
+
+ HTK Pro s.r.o.
+Prosecka 76a, Praha 9
+http://www.dev-shop.cz, http://www.dev-shop.sk
+tel : +420-2-83880361, fax : +420-2-86891391
+
+
+ 8. Brazil
+
+ 8.1 EXPERTNET
+
+ EXPERTNET
+Phone: +55-11-9309-8017
+mailto:ndiay@expertnet.com.br
+WWW:www.expertnet.com.br
+
+ 8.2 PRMAS SYSTEM
+
+ PRMAS SYSTEM
+Phone: 55-11-97489924
+web: http://www.prmas.com.br
+Email: vendas@prmas.com.br
+
+
+ 9. South Korea
+
+ 9.1 DevTools Inc.
+
+ DevTools Inc.
+Tel : +82 (2) 521-7900
+Fac : +82 (2) 2297-7900
+email : midmee@devtools.co.kr
+http://www.devtools.co.kr
+
+ 9.2 Buysoft Inc.
+
+ Buysoft Inc.
+10F HungEun bldg.,
+824-22 Yeoksam-Dong,
+Kangnam-Gu,
+Seoul,Korea
+
+email: Irene Kwon
+http://www.buysoft.co.kr
+
+
+ 10. Taiwan, R.O.C.
+
+
+ 10.1 Crispin, Chen
+
+ Crispin, Chen
+Tel: (04)2358-8484
+Mobile Phone: (0918)427-079
+E-Mail: crispin@pchome.com.tw
+Web Site:
+http://www.jane.com.tw/bbs/default.asp
+
+
+ 11. China
+
+ 11.1 Nora Xu
+
+ Nora Xu
+ViewSlip SoftWare
+mail:eric@viewslip.com
+http://www.viewslip.com
+Tel:+86-21-64069587
+
+
+ 11.2 CSTSOFT
+
+ CSTSOFT
+Tel:+86 10 88416081
+Fax:+86 10 68767223
+Email:cstsoft@public3.bta.net.cn
+http://www.cstsoft.com.cn
+
+
+ 11.3 Chongqing Huidu Technology Co., Ltd.
+
+ Chongqing Huidu Technology Co., Ltd.
+No.23, shixin Road, shiqiaopu,
+Chongqing
+China. 400039
+E-mail: sales@eVget.com
+Tel: +86- (0) 23- 68690297
+Fax: +86- (0) 23- 68623874
+www.eVget.com
+
+
+ 12. Nederland
+
+ 12.1 FastReport ook in Nederland verkrijgbaar
+
+ FastReport producten worden in Nederland geleverd door TeoWin Software.
+Wij geven graag meer informatie over de FastReport producten of antwoorden op vragen die voortkomen uit de kennismaking met FastReport.
+Voor meer informatie
+email:info@teowin-software.nl
+
+
+ 13. Lithuania
+
+
+ 13.1 JSC "SoftKey"
+
+ Postal address: Zvezdny boulevard, 21, office 801,
+129085, Moscow, Russia
+
+Tel./ fax: (095) 215-66-13, 797-26-64
+
+www.softkey.net
+www.softkey.lt
+www.softkey.lv
+www.softkey.pl
+www.softkey.ee
+www.softkeybg.com
+email: sales@softkey.ru
+
+
+ 14. Latvia
+
+
+ 14.1 JSC "SoftKey"
+
+ Postal address: Zvezdny boulevard, 21, office 801,
+129085, Moscow, Russia
+
+Tel./ fax: (095) 215-66-13, 797-26-64
+
+www.softkey.net
+www.softkey.lt
+www.softkey.lv
+www.softkey.pl
+www.softkey.ee
+www.softkeybg.com
+email: sales@softkey.ru
+
+
+ 15. Estonia
+
+ 15.1 JSC "SoftKey"
+
+ Postal address: Zvezdny boulevard, 21, office 801,
+129085, Moscow, Russia
+
+Tel./ fax: (095) 215-66-13, 797-26-64
+
+www.softkey.net
+www.softkey.lt
+www.softkey.lv
+www.softkey.pl
+www.softkey.ee
+www.softkeybg.com
+email: sales@softkey.ru
+
+
+ 16. Bulgaria
+
+ 16.1 JSC "SoftKey"
+
+ Postal address: Zvezdny boulevard, 21, office 801,
+129085, Moscow, Russia
+
+Tel./ fax: (095) 215-66-13, 797-26-64
+
+www.softkey.net
+www.softkey.lt
+www.softkey.lv
+www.softkey.pl
+www.softkey.ee
+www.softkeybg.com
+email: sales@softkey.ru
+
+
+ 17. Colombia
+
+ 17.1 Luz Zapata Velasquez
+
+ Luz Zapata Velasquez
+Tr. 41 #146 A 40 Interior 17 sala 501 City: Bogota - D.C
+Country: Colombia
+Tel/Fax: (+57)-1-625-3024
+mail: info@safsoft.com
+http://www.safsoft.com
+
+
+ 18. Latin America
+
+ 18.1 Danysoft
+
+ Danysoft Internatioal S.L.
+Avda Industria 4, Edif 1,
+28108 Accobendaj-Ma-Spain
+email: sales@danysoft.com
+http://www.danysoft.com
+
+
+ 19. Spain
+
+ 19.1 Danysoft
+
+ Danysoft Internatioal S.L.
+Avda Industria 4, Edif 1,
+28108 Accobendaj-Ma-Spain
+email: sales@danysoft.com
+http://www.danysoft.com
+
+
+ 20. Portugal
+
+ 20.1 Danysoft
+
+ Danysoft Internatioal S.L.
+Avda Industria 4, Edif 1,
+28108 Accobendaj-Ma-Spain
+email: sales@danysoft.com
+http://www.danysoft.com
+
+
+
+ 21. Israel
+
+ 21.1 Software Sources Ltd.
+
+ Software Sources Ltd.
+64B Hasharon St.
+P.O.Box 639
+Ra'anana 43106
+Tel. +972-9-7714578
+Fax. +972-9-7712194
+email: chen@software-sources.co.il
+http://www.software-sources.co.il
\ No newline at end of file
diff --git a/official/4.33/Demos/ClientServer/CGI/fastreport.dpr b/official/4.33/Demos/ClientServer/CGI/fastreport.dpr
new file mode 100644
index 0000000..b4663ed
--- /dev/null
+++ b/official/4.33/Demos/ClientServer/CGI/fastreport.dpr
@@ -0,0 +1,57 @@
+
+{******************************************}
+{ }
+{ FastReport v4.0 }
+{ FastReport CGI wrapper demo }
+{ }
+{ Copyright (c) 1998-2007 }
+{ by Alexander Fediachov, }
+{ Fast Reports Inc. }
+{ }
+{******************************************}
+
+program fastreport;
+
+{$APPTYPE CONSOLE}
+
+uses
+ Windows, SysUtils, Classes, frxCGIClient, IniFiles, frxServerUtils;
+
+const
+ CONFIG_FILENAME = 'fastreport.ini';
+ DEFAULT_CONFIG_PATH = '';
+ DEFAULT_PORT = 8097;
+ DEFAULT_HOST = '127.0.0.1';
+
+var
+ FHost: String;
+ FPort: Integer;
+ FIni: TIniFile;
+ c: TfrxCGIClient;
+ s: String;
+
+begin
+ if DEFAULT_CONFIG_PATH = '' then
+ s := ExtractFilePath(ParamStr(0)) + CONFIG_FILENAME
+ else
+ s := DEFAULT_CONFIG_PATH + CONFIG_FILENAME;
+ if FileExists(s) then
+ begin
+ FIni := TIniFile.Create(s);
+ FHost := FIni.ReadString('REPORTSERVER', 'Host', DEFAULT_HOST);
+ FPort := FIni.ReadInteger('REPORTSERVER', 'Port', DEFAULT_PORT);
+ FIni.Free;
+ end
+ else begin
+ FHost := DEFAULT_HOST;
+ FPort := DEFAULT_PORT;
+ end;
+ c := TfrxCGIClient.Create;
+ c.Host := FHost;
+ c.Port := FPort;
+ try
+ c.Open;
+ finally
+ c.Free;
+ end;
+end.
diff --git a/official/4.33/Demos/ClientServer/CGI/fastreport.ini b/official/4.33/Demos/ClientServer/CGI/fastreport.ini
new file mode 100644
index 0000000..e0494d4
--- /dev/null
+++ b/official/4.33/Demos/ClientServer/CGI/fastreport.ini
@@ -0,0 +1,3 @@
+[REPORTSERVER]
+Host=127.0.0.1
+Port=8097
diff --git a/official/4.33/Demos/ClientServer/CGI/index.html b/official/4.33/Demos/ClientServer/CGI/index.html
new file mode 100644
index 0000000..0c049e7
--- /dev/null
+++ b/official/4.33/Demos/ClientServer/CGI/index.html
@@ -0,0 +1,6 @@
+
+
+1. Connect to the FastReport Server through the Apache Web Server
+2. Direct connect to the FastReport Server
+
+
\ No newline at end of file
diff --git a/official/4.33/Demos/ClientServer/Client/Advanced/FRClient.dpr b/official/4.33/Demos/ClientServer/Client/Advanced/FRClient.dpr
new file mode 100644
index 0000000..3bed53c
--- /dev/null
+++ b/official/4.33/Demos/ClientServer/Client/Advanced/FRClient.dpr
@@ -0,0 +1,14 @@
+program FRClient;
+
+uses
+ Forms,
+ main in 'main.pas' {main};
+
+{$R *.res}
+
+begin
+ Application.Initialize;
+ Application.Title := 'FastReport Client Demo';
+ Application.CreateForm(TMainForm, MainForm);
+ Application.Run;
+end.
diff --git a/official/4.33/Demos/ClientServer/Client/Advanced/FRClient.res b/official/4.33/Demos/ClientServer/Client/Advanced/FRClient.res
new file mode 100644
index 0000000..06b79d7
Binary files /dev/null and b/official/4.33/Demos/ClientServer/Client/Advanced/FRClient.res differ
diff --git a/official/4.33/Demos/ClientServer/Client/Advanced/main.dfm b/official/4.33/Demos/ClientServer/Client/Advanced/main.dfm
new file mode 100644
index 0000000..fa6f99e
Binary files /dev/null and b/official/4.33/Demos/ClientServer/Client/Advanced/main.dfm differ
diff --git a/official/4.33/Demos/ClientServer/Client/Advanced/main.pas b/official/4.33/Demos/ClientServer/Client/Advanced/main.pas
new file mode 100644
index 0000000..cfa6cc2
--- /dev/null
+++ b/official/4.33/Demos/ClientServer/Client/Advanced/main.pas
@@ -0,0 +1,463 @@
+
+{******************************************}
+{ }
+{ FastReport v4.0 }
+{ FastReport client demo }
+{ Copyright (c) 1998-2007 }
+{ by Alexander Fediachov, }
+{ Fast Reports Inc. }
+{ }
+{******************************************}
+
+unit main;
+
+{$I frx.inc}
+
+interface
+
+uses
+ Windows, SysUtils, Classes, Controls, Forms,
+ Dialogs, StdCtrls, ShellApi, frxClass, frxServerClient,
+ frxGZip, frxDCtrl, frxChBox, frxCross, frxRich, frxChart,
+ frxOLE, frxBarcode, ExtCtrls, frxExportPDF, frxExportImage,
+ frxExportRTF, frxExportXML, frxExportXLS, frxExportHTML,
+ frxExportTXT, frxGradient, Graphics, ComCtrls, Menus, ImgList
+{$IFDEF Delphi6}
+, Variants
+{$ENDIF}
+, frxExportMail, frxExportText, frxExportCSV;
+
+type
+ TMainForm = class(TForm)
+ frxServerConnection1: TfrxServerConnection;
+ TestBtn: TButton;
+ Log: TMemo;
+ Rep: TEdit;
+ Label1: TLabel;
+ Label2: TLabel;
+ Label3: TLabel;
+ ShowBtn: TButton;
+ CloseBtn: TButton;
+ Label4: TLabel;
+ Label5: TLabel;
+ Port: TEdit;
+ Threads: TEdit;
+ Label6: TLabel;
+ frxBarCodeObject1: TfrxBarCodeObject;
+ frxOLEObject1: TfrxOLEObject;
+ frxChartObject1: TfrxChartObject;
+ frxRichObject1: TfrxRichObject;
+ frxCrossObject1: TfrxCrossObject;
+ frxCheckBoxObject1: TfrxCheckBoxObject;
+ frxDialogControls1: TfrxDialogControls;
+ Label7: TLabel;
+ Login: TEdit;
+ Label8: TLabel;
+ Password: TEdit;
+ StopBtn: TButton;
+ Label9: TLabel;
+ Label10: TLabel;
+ Label11: TLabel;
+ Image1: TImage;
+ frxGradientObject1: TfrxGradientObject;
+ frxHTMLExport1: TfrxHTMLExport;
+ frxXLSExport1: TfrxXLSExport;
+ frxXMLExport1: TfrxXMLExport;
+ frxRTFExport1: TfrxRTFExport;
+ frxBMPExport1: TfrxBMPExport;
+ frxJPEGExport1: TfrxJPEGExport;
+ frxTIFFExport1: TfrxTIFFExport;
+ frxPDFExport1: TfrxPDFExport;
+ ProxyHost: TEdit;
+ Label12: TLabel;
+ Label13: TLabel;
+ ProxyPort: TEdit;
+ Label14: TLabel;
+ Label15: TLabel;
+ Panel2: TPanel;
+ Panel4: TPanel;
+ Host: TEdit;
+ ReportsTree: TTreeView;
+ Description: TMemo;
+ Label16: TLabel;
+ Panel5: TPanel;
+ ExportBtn: TButton;
+ Label17: TLabel;
+ Panel10: TPanel;
+ ConnectBtn: TButton;
+ Panel11: TPanel;
+ Panel9: TPanel;
+ Panel12: TPanel;
+ Panel13: TPanel;
+ Panel14: TPanel;
+ Label18: TLabel;
+ PopupMenu1: TPopupMenu;
+ Clear1: TMenuItem;
+ frxReportClient1: TfrxReportClient;
+ ImageList1: TImageList;
+ frxCSVExport1: TfrxCSVExport;
+ frxSimpleTextExport1: TfrxSimpleTextExport;
+ frxMailExport1: TfrxMailExport;
+ procedure TestBtnClick(Sender: TObject);
+ procedure CloseBtnClick(Sender: TObject);
+ procedure ShowBtnClick(Sender: TObject);
+ procedure FormCreate(Sender: TObject);
+ procedure FormClose(Sender: TObject; var Action: TCloseAction);
+ procedure StopBtnClick(Sender: TObject);
+ procedure ListBox1DblClick(Sender: TObject);
+ procedure ListBox1KeyDown(Sender: TObject; var Key: Word;
+ Shift: TShiftState);
+ procedure Label11Click(Sender: TObject);
+ procedure ConnectBtnClick(Sender: TObject);
+ procedure Clear1Click(Sender: TObject);
+ procedure ReportsTreeChange(Sender: TObject; Node: TTreeNode);
+ procedure ReportsTreeCustomDrawItem(Sender: TCustomTreeView;
+ Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
+ procedure ExportBtnClick(Sender: TObject);
+ private
+ ThreadList: TList;
+ ReportsList: TStringList;
+ procedure ClearThreads;
+ end;
+
+ TfrxClientTestThread = class (TThread)
+ protected
+ procedure Execute; override;
+ private
+ CountRep: Integer;
+ ErrorsCount: Integer;
+ Log: TMemo;
+ ThreadID: Integer;
+ FConnection: TfrxServerConnection;
+ FRepName: String;
+ procedure AppendLog;
+ procedure FinishLog;
+ public
+ Report: TfrxReportClient;
+ Done: Boolean;
+ constructor Create(C: TfrxServerConnection; RepName: String;
+ Id: Integer; Rep: Integer; L: TMemo);
+ end;
+
+var
+ MainForm: TMainForm;
+
+implementation
+
+{$IFDEF Delphi7}
+uses XPMan;
+{$ENDIF}
+
+{$R *.dfm}
+
+procedure TMainForm.TestBtnClick(Sender: TObject);
+var
+ i, j, k: Integer;
+ Thread: TfrxClientTestThread;
+ s: String;
+begin
+ frxServerConnection1.Host := Host.Text;
+ frxServerConnection1.Port := StrToInt(Port.Text);
+ frxServerConnection1.Login := Login.Text;
+ frxServerConnection1.Password := Password.Text;
+ if (Length(ProxyHost.Text) > 0) then
+ begin
+ frxServerConnection1.ProxyHost := ProxyHost.Text;
+ frxServerConnection1.ProxyPort := StrToInt(ProxyPort.Text);
+ end;
+ ClearThreads;
+ j := StrToInt(Threads.Text);
+ k := StrToInt(Rep.Text);
+ i := Integer(ReportsTree.Selected.Data);
+ if i <> -1 then
+ begin
+ Log.Lines.Add('Start test');
+ s := ReportsList[i + 1];
+ for i := 1 to j do
+ begin
+ Thread := TfrxClientTestThread.Create(frxServerConnection1, s, i, k, Log);
+ ThreadList.Add(Thread);
+ end;
+ end;
+end;
+
+procedure TMainForm.CloseBtnClick(Sender: TObject);
+begin
+ Close;
+end;
+
+procedure TMainForm.ShowBtnClick(Sender: TObject);
+var
+ t: Cardinal;
+ tf: Double;
+ i: Integer;
+begin
+ frxServerConnection1.Host := Host.Text;
+ frxServerConnection1.Port := StrToInt(Port.Text);
+ frxServerConnection1.Login := Login.Text;
+ frxServerConnection1.Password := Password.Text;
+ if (Length(ProxyHost.Text) > 0) then
+ begin
+ frxServerConnection1.ProxyHost := ProxyHost.Text;
+ frxServerConnection1.ProxyPort := StrToInt(ProxyPort.Text);
+ end;
+ i := Integer(ReportsTree.Selected.Data);
+ if i <> -1 then
+ begin
+ frxReportClient1.LoadFromFile(ReportsList[i + 1]);
+ t := GetTickCount;
+ if frxReportClient1.PrepareReport then
+ begin
+ tf := (GetTickCount - t) / 1000;
+ Log.Lines.Add(frxReportClient1.ReportName +
+ ' Time=' + FloatToStr(tf) + ' Size=' + IntToStr(frxReportClient1.Client.StreamSize));
+ frxReportClient1.ShowPreparedReport;
+ end;
+ Log.Lines.AddStrings(frxReportClient1.Errors);
+ end;
+end;
+
+procedure TMainForm.FormCreate(Sender: TObject);
+begin
+ Label14.Caption := #174;
+ Label15.Caption := #169 + Label15.Caption;
+ ThreadList := TList.Create;
+ ReportsList := TStringList.Create;
+end;
+
+procedure TMainForm.ClearThreads;
+var
+ i: Integer;
+begin
+ for i := 0 to ThreadList.Count - 1 do
+ if Assigned(TfrxClientTestThread(ThreadList[i])) then
+ begin
+ TfrxClientTestThread(ThreadList[i]).Terminate;
+ TfrxClientTestThread(ThreadList[i]).Free;
+ end;
+ ThreadList.Clear;
+end;
+
+procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction);
+begin
+ ReportsList.Free;
+ ClearThreads;
+ ThreadList.Free;
+end;
+
+procedure TMainForm.StopBtnClick(Sender: TObject);
+begin
+ ClearThreads;
+end;
+
+procedure TMainForm.ListBox1DblClick(Sender: TObject);
+begin
+ ShowBtnClick(Sender);
+end;
+
+procedure TMainForm.ListBox1KeyDown(Sender: TObject; var Key: Word;
+ Shift: TShiftState);
+begin
+ if Key = 13 then
+ ShowBtnClick(Sender);
+end;
+
+procedure TMainForm.Label11Click(Sender: TObject);
+begin
+ ShellExecute(GetDesktopWindow, 'open', PChar(Label11.Caption), nil, nil, SW_SHOW);
+end;
+
+procedure TMainForm.ConnectBtnClick(Sender: TObject);
+var
+ t: Cardinal;
+ tf: Double;
+ s, s1: String;
+ AccessFlag: Boolean;
+ i: Integer;
+ Node: TTreeNode;
+ TopNode: TTreeNode;
+ OldName: String;
+
+begin
+ ReportsTree.Items.Clear;
+ ReportsList.Clear;
+ Log.Clear;
+
+ frxServerConnection1.Host := Host.Text;
+ frxServerConnection1.Port := StrToInt(Port.Text);
+ frxServerConnection1.Login := Login.Text;
+ frxServerConnection1.Password := Password.Text;
+ if (Length(ProxyHost.Text) > 0) then
+ begin
+ frxServerConnection1.ProxyHost := ProxyHost.Text;
+ frxServerConnection1.ProxyPort := StrToInt(ProxyPort.Text);
+ end;
+ t := GetTickCount;
+ Log.Lines.Text := Log.Lines.Text +
+ frxReportClient1.GetServerVariable('SERVER_NAME');
+ tf := (GetTickCount - t) / 1000;
+ if frxReportClient1.Errors.Count = 0 then
+ begin
+ Log.Lines.Text := Log.Lines.Text +
+ 'Version: ' + frxReportClient1.GetServerVariable('SERVER_SOFTWARE');
+ Log.Lines.Text := Log.Lines.Text +
+ 'From: ' + frxReportClient1.GetServerVariable('SERVER_LAST_UPDATE');
+ Log.Lines.Text := Log.Lines.Text +
+ 'Uptime: ' + frxReportClient1.GetServerVariable('SERVER_UPTIME');
+ Log.Lines.Add('Ping:' + FloatToStr(tf) + 'ms.');
+ end;
+ Log.Lines.AddStrings(frxReportClient1.Errors);
+
+ AccessFlag := frxReportClient1.Errors.Count = 0;
+
+ if AccessFlag then
+ begin
+ ReportsList.Text := frxReportClient1.GetServerVariable('SERVER_REPORTS_LIST');
+ if ReportsList.Count > 0 then
+ begin
+ ReportsTree.Items.BeginUpdate;
+ TopNode := nil;
+ Oldname := '';
+ for i := 0 to (ReportsList.Count div 3) - 1 do
+ begin
+ s := ReportsList[(i * 3) + 1];
+ s := StringReplace(StringReplace(s, ExtractFileName(s), '', []), '\', ' ', [rfReplaceAll]);
+ if s <> OldName then
+ begin
+ if s = '' then
+ s1 := 'Reports'
+ else
+ s1 := s;
+ Node := ReportsTree.Items.AddChild(nil, s1);
+ Node.Data := Pointer(-1);
+ Node.ImageIndex := 0;
+ TopNode := Node;
+ OldName := s;
+ end;
+ Node := ReportsTree.Items.AddChild(TopNode, ReportsList[i * 3]);
+ Node.Data := Pointer((i * 3));
+ Node.ImageIndex := 1;
+ end;
+ ReportsTree.Items.EndUpdate;
+ ReportsTree.TopItem := ReportsTree.Items[0];
+ ReportsTree.Selected := ReportsTree.Items[0];
+ ReportsTree.SetFocus;
+ end else
+ Log.Lines.Add('Nothing reports is available or information restricted.');
+ end;
+end;
+
+procedure TMainForm.Clear1Click(Sender: TObject);
+begin
+ Log.Clear;
+end;
+
+procedure TMainForm.ReportsTreeChange(Sender: TObject; Node: TTreeNode);
+var
+ i: Integer;
+begin
+ i := Integer(Node.Data);
+ if i <> -1 then
+ Description.Text := ReportsList[i + 2]
+ else
+ Description.Text := Node.Text;
+ ShowBtn.Enabled := i <> -1;
+ ExportBtn.Enabled := ShowBtn.Enabled;
+ TestBtn.Enabled := ShowBtn.Enabled;
+end;
+
+procedure TMainForm.ReportsTreeCustomDrawItem(Sender: TCustomTreeView;
+ Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
+begin
+ if Node.Count <> 0 then
+ ReportsTree.Canvas.Font.Style := [fsBold];
+end;
+
+procedure TMainForm.ExportBtnClick(Sender: TObject);
+var
+ t: Cardinal;
+ tf: Double;
+ i: Integer;
+begin
+ frxServerConnection1.Host := Host.Text;
+ frxServerConnection1.Port := StrToInt(Port.Text);
+ frxServerConnection1.Login := Login.Text;
+ frxServerConnection1.Password := Password.Text;
+ if (Length(ProxyHost.Text) > 0) then
+ begin
+ frxServerConnection1.ProxyHost := ProxyHost.Text;
+ frxServerConnection1.ProxyPort := StrToInt(ProxyPort.Text);
+ end;
+ i := Integer(ReportsTree.Selected.Data);
+ if i <> -1 then
+ begin
+ frxReportClient1.LoadFromFile(ReportsList[i + 1]);
+ t := GetTickCount;
+ if frxReportClient1.PrepareReport then
+ begin
+ tf := (GetTickCount - t) / 1000;
+ Log.Lines.Add(frxReportClient1.ReportName +
+ ' Time=' + FloatToStr(tf) + ' Size=' + IntToStr(frxReportClient1.Client.StreamSize));
+ frxReportClient1.Export(frxPDFExport1);
+ end;
+ Log.Lines.AddStrings(frxReportClient1.Errors);
+ end;
+end;
+
+{ TfrxClientTestThread }
+
+constructor TfrxClientTestThread.Create(C: TfrxServerConnection; RepName: String;
+ Id: Integer; Rep: Integer; L: TMemo);
+begin
+ inherited Create(True);
+ ErrorsCount := 0;
+ ThreadId := Id;
+ CountRep := Rep;
+ FConnection := C;
+ FRepName := RepName;
+ Log := L;
+ Done := False;
+ Resume;
+end;
+
+procedure TfrxClientTestThread.Execute;
+var
+ i: Integer;
+begin
+ Done := False;
+ Report := TfrxReportClient.Create(nil);
+ Report.EngineOptions.EnableThreadSafe := True;
+ Report.ShowProgress := False;
+ Report.EngineOptions.SilentMode := True;
+ Report.Connection := FConnection;
+ Report.ReportName := FRepName;
+ i := 0;
+ while (i < CountRep) and (not Terminated) do
+ begin
+ Report.Clear;
+ Report.PrepareReport;
+ Synchronize(AppendLog);
+ ErrorsCount := ErrorsCount + Report.Errors.Count;
+ Inc(i);
+ end;
+ Synchronize(FinishLog);
+ Report.Free;
+ Done := True;
+end;
+
+procedure TfrxClientTestThread.AppendLog;
+begin
+ if Assigned(Log) and (Report.Errors.Count > 0) then
+ begin
+ Log.Lines.Add('Thread#' + IntToStr(ThreadID));
+ Log.Lines.AddStrings(Report.Errors);
+ end;
+end;
+
+procedure TfrxClientTestThread.FinishLog;
+begin
+ if Assigned(Log) and (not Terminated) then
+ Log.Lines.Add('Thread#' + IntToStr(ThreadID) + ' finished. Errors:' + IntToStr(ErrorsCount));
+end;
+
+end.
diff --git a/official/4.33/Demos/ClientServer/Client/Simple/FRClientSimple.dpr b/official/4.33/Demos/ClientServer/Client/Simple/FRClientSimple.dpr
new file mode 100644
index 0000000..330bd0c
--- /dev/null
+++ b/official/4.33/Demos/ClientServer/Client/Simple/FRClientSimple.dpr
@@ -0,0 +1,14 @@
+program FRClientSimple;
+
+uses
+ Forms,
+ main in 'main.pas' {main};
+
+{$R *.res}
+
+begin
+ Application.Initialize;
+ Application.Title := 'FastReport Simple Client Demo';
+ Application.CreateForm(TMainForm, MainForm);
+ Application.Run;
+end.
diff --git a/official/4.33/Demos/ClientServer/Client/Simple/FRClientSimple.res b/official/4.33/Demos/ClientServer/Client/Simple/FRClientSimple.res
new file mode 100644
index 0000000..06b79d7
Binary files /dev/null and b/official/4.33/Demos/ClientServer/Client/Simple/FRClientSimple.res differ
diff --git a/official/4.33/Demos/ClientServer/Client/Simple/main.dfm b/official/4.33/Demos/ClientServer/Client/Simple/main.dfm
new file mode 100644
index 0000000..eb38516
Binary files /dev/null and b/official/4.33/Demos/ClientServer/Client/Simple/main.dfm differ
diff --git a/official/4.33/Demos/ClientServer/Client/Simple/main.pas b/official/4.33/Demos/ClientServer/Client/Simple/main.pas
new file mode 100644
index 0000000..14cbfd2
--- /dev/null
+++ b/official/4.33/Demos/ClientServer/Client/Simple/main.pas
@@ -0,0 +1,124 @@
+
+{******************************************}
+{ }
+{ FastReport v4.0 }
+{ FastReport simple client demo }
+{ Copyright (c) 1998-2007 }
+{ by Alexander Fediachov, }
+{ Fast Reports Inc. }
+{ }
+{******************************************}
+
+unit main;
+
+{$I frx.inc}
+
+interface
+
+uses
+ Windows, SysUtils, Classes, Controls, Forms,
+ Dialogs, StdCtrls, ShellApi, frxClass, frxServerClient,
+ frxGZip, frxDCtrl, frxChBox, frxCross, frxRich, frxChart,
+ frxOLE, frxBarcode, ExtCtrls, frxExportPDF, frxExportImage,
+ frxExportRTF, frxExportXML, frxExportXLS, frxExportHTML,
+ frxExportTXT, frxGradient, Graphics
+{$IFDEF Delphi6}
+, Variants
+{$ENDIF};
+
+type
+ TMainForm = class(TForm)
+ frxServerConnection1: TfrxServerConnection;
+ frxReportClient1: TfrxReportClient;
+ Memo1: TMemo;
+ Label3: TLabel;
+ ShowBtn: TButton;
+ CloseBtn: TButton;
+ Label4: TLabel;
+ Label5: TLabel;
+ Port: TEdit;
+ frxBarCodeObject1: TfrxBarCodeObject;
+ frxOLEObject1: TfrxOLEObject;
+ frxChartObject1: TfrxChartObject;
+ frxRichObject1: TfrxRichObject;
+ frxCrossObject1: TfrxCrossObject;
+ frxCheckBoxObject1: TfrxCheckBoxObject;
+ frxDialogControls1: TfrxDialogControls;
+ Label7: TLabel;
+ Login: TEdit;
+ Label8: TLabel;
+ Password: TEdit;
+ Label9: TLabel;
+ Label10: TLabel;
+ Label11: TLabel;
+ Image1: TImage;
+ Panel1: TPanel;
+ frxHTMLExport1: TfrxHTMLExport;
+ frxXLSExport1: TfrxXLSExport;
+ frxRTFExport1: TfrxRTFExport;
+ frxPDFExport1: TfrxPDFExport;
+ Label14: TLabel;
+ Label15: TLabel;
+ Panel2: TPanel;
+ Host: TEdit;
+ Label1: TLabel;
+ RepName: TEdit;
+ Label2: TLabel;
+ Label6: TLabel;
+ Param1: TEdit;
+ Param1Value: TEdit;
+ Label12: TLabel;
+ Label13: TLabel;
+ Param2: TEdit;
+ Param2Value: TEdit;
+ procedure CloseBtnClick(Sender: TObject);
+ procedure ShowBtnClick(Sender: TObject);
+ procedure Label11Click(Sender: TObject);
+ procedure FormCreate(Sender: TObject);
+ end;
+
+var
+ MainForm: TMainForm;
+
+implementation
+
+{$R *.dfm}
+
+{$IFDEF Delphi7}
+uses XPMan;
+{$ENDIF}
+
+procedure TMainForm.CloseBtnClick(Sender: TObject);
+begin
+ Close;
+end;
+
+procedure TMainForm.ShowBtnClick(Sender: TObject);
+begin
+ frxServerConnection1.Host := Host.Text;
+ frxServerConnection1.Port := StrToInt(Port.Text);
+ frxServerConnection1.Login := Login.Text;
+ frxServerConnection1.Password := Password.Text;
+ frxReportClient1.LoadFromFile(RepName.Text);
+ frxReportClient1.Variables.Clear;
+ if Length(Param1Value.Text) > 0 then
+ frxReportClient1.Variables[Param1.Text] := Param1Value.Text;
+ if Length(Param2Value.Text) > 0 then
+ frxReportClient1.Variables[Param2.Text] := Param2Value.Text;
+ if frxReportClient1.PrepareReport then
+ frxReportClient1.ShowPreparedReport;
+ Memo1.Lines.AddStrings(frxReportClient1.Errors);
+end;
+
+procedure TMainForm.Label11Click(Sender: TObject);
+begin
+ ShellExecute(GetDesktopWindow, 'open', PChar(Label11.Caption), nil, nil, SW_SHOW);
+end;
+
+procedure TMainForm.FormCreate(Sender: TObject);
+begin
+ Label14.Caption := #174;
+ Label15.Caption := #169 + label15.Caption;
+end;
+
+end.
diff --git a/official/4.33/Demos/ClientServer/Server/FRServer.dpr b/official/4.33/Demos/ClientServer/Server/FRServer.dpr
new file mode 100644
index 0000000..70a5bea
--- /dev/null
+++ b/official/4.33/Demos/ClientServer/Server/FRServer.dpr
@@ -0,0 +1,15 @@
+program FRServer;
+
+uses
+ Windows,
+ Forms,
+ Main in 'Main.pas' {main};
+
+{$R *.RES}
+
+begin
+ Application.Initialize;
+ Application.Title := 'FastReport Server Demo';
+ Application.CreateForm(TMainForm, MainForm);
+ Application.Run;
+end.
diff --git a/official/4.33/Demos/ClientServer/Server/FRServer.res b/official/4.33/Demos/ClientServer/Server/FRServer.res
new file mode 100644
index 0000000..06b79d7
Binary files /dev/null and b/official/4.33/Demos/ClientServer/Server/FRServer.res differ
diff --git a/official/4.33/Demos/ClientServer/Server/Main.dfm b/official/4.33/Demos/ClientServer/Server/Main.dfm
new file mode 100644
index 0000000..7386c32
Binary files /dev/null and b/official/4.33/Demos/ClientServer/Server/Main.dfm differ
diff --git a/official/4.33/Demos/ClientServer/Server/Main.pas b/official/4.33/Demos/ClientServer/Server/Main.pas
new file mode 100644
index 0000000..e7c0ae6
--- /dev/null
+++ b/official/4.33/Demos/ClientServer/Server/Main.pas
@@ -0,0 +1,280 @@
+
+{******************************************}
+{ }
+{ FastReport v4.0 }
+{ FastReport Server demo }
+{ Copyright (c) 1998-2007 }
+{ by Alexander Fediachov, }
+{ Fast Reports Inc. }
+{ }
+{******************************************}
+
+unit Main;
+
+{$I frx.inc}
+
+interface
+
+uses
+ Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
+ StdCtrls, Db, DBTables, frxDesgn, frxClass, frxDCtrl,
+ frxChart, frxRich, frxBarcode, ImgList, ComCtrls, ExtCtrls, frxOLE,
+ frxCross, frxServer, frxGradient, frxChBox, Menus, ShellApi,
+ frxADOComponents, ADODB, frxGZip, Dialogs, frxMD5, frxServerUtils, IniFiles,
+ frxServerStat, frxServerConfig;
+
+type
+ TMainForm = class(TForm)
+ frBarCodeObject1: TfrxBarCodeObject;
+ frRichObject1: TfrxRichObject;
+ frChartObject1: TfrxChartObject;
+ frDialogControls1: TfrxDialogControls;
+ ImageList1: TImageList;
+ Image1: TImage;
+ Label1: TLabel;
+ Label2: TLabel;
+ Label3: TLabel;
+ frOLEObject1: TfrxOLEObject;
+ frCrossObject1: TfrxCrossObject;
+ frxCheckBoxObject1: TfrxCheckBoxObject;
+ PopupMenu1: TPopupMenu;
+ Close1: TMenuItem;
+ ShowWin: TMenuItem;
+ N1: TMenuItem;
+ MinimizeBtn: TButton;
+ CloseBtn: TButton;
+ GroupBox1: TGroupBox;
+ Label4: TLabel;
+ LBActive: TLabel;
+ LBInactive: TLabel;
+ GroupBox2: TGroupBox;
+ Label5: TLabel;
+ ETotalSessions: TEdit;
+ Label6: TLabel;
+ ETotalReports: TEdit;
+ Timer1: TTimer;
+ Label7: TLabel;
+ Label8: TLabel;
+ EMaxReports: TEdit;
+ EMaxSessions: TEdit;
+ Label9: TLabel;
+ Label10: TLabel;
+ ECurrentReports: TEdit;
+ ECurrentSessions: TEdit;
+ Label11: TLabel;
+ EErrors: TEdit;
+ N2: TMenuItem;
+ Start1: TMenuItem;
+ Stop1: TMenuItem;
+ StartBtn: TButton;
+ StopBtn: TButton;
+ DesignBtn: TButton;
+ frxDesigner1: TfrxDesigner;
+ OpenDialog1: TOpenDialog;
+ Label12: TLabel;
+ Uptime: TLabel;
+ frxADOComponents1: TfrxADOComponents;
+ Serv: TfrxReportServer;
+ Label13: TLabel;
+ DemoDatabase: TADOConnection;
+ procedure FormCreate(Sender: TObject);
+ procedure FormClose(Sender: TObject; var Action: TCloseAction);
+ procedure MinimizeBtnClick(Sender: TObject);
+ procedure ShutBtnClick(Sender: TObject);
+ procedure ShowWinClick(Sender: TObject);
+ procedure StartBtnClick(Sender: TObject);
+ procedure StopBtnClick(Sender: TObject);
+ procedure Timer1Timer(Sender: TObject);
+ procedure DesignBtnClick(Sender: TObject);
+ procedure Label3Click(Sender: TObject);
+ protected
+ procedure ControlWindow(var Msg:TMessage); message WM_SYSCOMMAND;
+ procedure IconMouse(var Msg : TMessage); message WM_USER + 1;
+ private
+ Icon: TIcon;
+ frReport1: TfrxReport;
+ procedure TrayIcon(n: Integer; Icon: TIcon);
+ end;
+
+var
+ MainForm: TMainForm;
+ dbMd: String;
+
+implementation
+
+{$R *.DFM}
+
+{$IFDEF Delphi7}
+uses XPMan;
+{$ENDIF}
+
+var
+ DATABASE_FILE: String;
+ DBConnStr: String = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=';
+
+procedure TMainForm.TrayIcon(n:Integer;Icon:TIcon);
+var
+ Nim: TNotifyIconData;
+begin
+ with Nim do
+ begin
+ cbSize:=SizeOf(Nim);
+ Wnd:=Self.Handle;
+ uID:=1;
+ uFlags:=NIF_ICON or NIF_MESSAGE or NIF_TIP;
+ hicon:=Icon.Handle;
+ uCallbackMessage:=WM_USER + 1;
+ szTip:='FastReport Server';
+ end;
+ case n of
+ 1: Shell_NotifyIcon(Nim_Add,@Nim);
+ 2: Shell_NotifyIcon(Nim_Delete,@Nim);
+ 3: Shell_NotifyIcon(Nim_Modify,@Nim);
+ end;
+end;
+
+procedure TMainForm.ControlWindow(var Msg: TMessage);
+begin
+ if Msg.WParam = SC_MINIMIZE then
+ begin
+ TrayIcon(1, Icon);
+ ShowWindow(Application.Handle, SW_HIDE);
+ ShowWindow(Handle, SW_HIDE);
+ end else
+ inherited;
+end;
+
+procedure TMainForm.IconMouse(var Msg: TMessage);
+var
+ p:tpoint;
+begin
+ GetCursorPos(p);
+ case Msg.LParam of
+ WM_LBUTTONUP, WM_LBUTTONDBLCLK:
+ ShowWinClick(nil);
+ WM_RBUTTONUP:
+ begin
+ SetForegroundWindow(Handle);
+ PopupMenu1.Popup(p.X, p.Y);
+ PostMessage(Handle,WM_NULL,0,0)
+ end;
+ End;
+end;
+
+procedure TMainForm.FormCreate(Sender: TObject);
+begin
+ Label13.Caption := #174;
+ Icon := TIcon.Create;
+ ImageList1.GetIcon(0, Icon);
+ DemoDatabase.ConnectionString := DBConnStr + frxGetAbsPath(ServerConfig.GetValue('server.database.pathtodatabase'));
+ try
+ DemoDatabase.Open;
+ except
+ ShowMessage('Error database connection!');
+ end;
+ StartBtnClick(Sender);
+ MinimizeBtnClick(Sender);
+end;
+
+procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction);
+begin
+ if Serv <> nil then
+ StopBtnClick(Sender);
+ TrayIcon(2, Icon);
+ Icon.Free;
+ if DemoDatabase.Connected then
+ DemoDatabase.Close;
+end;
+
+procedure TMainForm.MinimizeBtnClick(Sender: TObject);
+begin
+ PostMessage(Handle, WM_SYSCOMMAND, SC_MINIMIZE, 0);
+end;
+
+procedure TMainForm.ShutBtnClick(Sender: TObject);
+begin
+ Close;
+end;
+
+procedure TMainForm.ShowWinClick(Sender: TObject);
+begin
+ ShowWindow(Application.Handle, SW_SHOWNORMAL);
+ ShowWindow(Handle, SW_SHOWNORMAL);
+end;
+
+procedure TMainForm.StartBtnClick(Sender: TObject);
+begin
+ if DemoDatabase.Connected then
+ begin
+ Screen.Cursor := crHourGlass;
+ try
+ Serv.Open;
+ if Serv.Active then
+ begin
+ StartBtn.Enabled := False;
+ StopBtn.Enabled := True;
+ LBActive.Visible := True;
+ LBInactive.Visible := False;
+ Timer1.Enabled := True;
+ ImageList1.GetIcon(0, Icon);
+ TrayIcon(3, Icon);
+ Start1.Enabled := False;
+ Stop1.Enabled := True;
+ end;
+ finally
+ Screen.Cursor := crDefault;
+ end;
+ end;
+end;
+
+procedure TMainForm.StopBtnClick(Sender: TObject);
+begin
+ Screen.Cursor := crHourGlass;
+ try
+ Timer1.Enabled := False;
+ Serv.Close;
+ StartBtn.Enabled := True;
+ StopBtn.Enabled := False;
+ LBActive.Visible := False;
+ LBInactive.Visible := True;
+ ImageList1.GetIcon(1, Icon);
+ TrayIcon(3, Icon);
+ Start1.Enabled := True;
+ Stop1.Enabled := False;
+ finally
+ Screen.Cursor := crDefault;
+ end;
+end;
+
+procedure TMainForm.Timer1Timer(Sender: TObject);
+begin
+ ETotalSessions.Text := IntToStr(ServerStatistic.TotalSessionsCount);
+ ETotalReports.Text := IntToStr(ServerStatistic.TotalReportsCount);
+ EMaxSessions.Text := IntToStr(ServerStatistic.MaxSessionsCount);
+ EMaxReports.Text := IntToStr(ServerStatistic.MaxReportsCount);
+ EErrors.Text := IntToStr(ServerStatistic.TotalErrors);
+ ECurrentSessions.Text := IntToStr(ServerStatistic.CurrentSessionsCount);
+ ECurrentReports.Text := IntToStr(ServerStatistic.CurrentReportsCount);
+ Uptime.Caption := ServerStatistic.FormatUpTime;
+ Label2.Caption := 'Version: ' + Serv.Variables.GetValue('SERVER_SOFTWARE');
+end;
+
+procedure TMainForm.DesignBtnClick(Sender: TObject);
+begin
+ OpenDialog1.InitialDir := Serv.Configuration.ReportPath;
+ if OpenDialog1.Execute then
+ begin
+ frReport1 := TfrxReport.Create(nil);
+ frReport1.LoadFromFile(OpenDialog1.FileName);
+ frReport1.Variables['PathToDataBase'] := '''' + DATABASE_FILE + '''';
+ frReport1.DesignReport;
+ frReport1.Free;
+ end;
+end;
+
+procedure TMainForm.Label3Click(Sender: TObject);
+begin
+ ShellExecute(GetDesktopWindow, 'open', PChar(Label3.Caption), nil, nil, SW_SHOW);
+end;
+
+end.
diff --git a/official/4.33/Demos/ClientServer/Server/allow.conf b/official/4.33/Demos/ClientServer/Server/allow.conf
new file mode 100644
index 0000000..e69de29
diff --git a/official/4.33/Demos/ClientServer/Server/config.xml b/official/4.33/Demos/ClientServer/Server/config.xml
new file mode 100644
index 0000000..9854e41
--- /dev/null
+++ b/official/4.33/Demos/ClientServer/Server/config.xml
@@ -0,0 +1,156 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/official/4.33/Demos/ClientServer/Server/config_demo.xml b/official/4.33/Demos/ClientServer/Server/config_demo.xml
new file mode 100644
index 0000000..4062b51
--- /dev/null
+++ b/official/4.33/Demos/ClientServer/Server/config_demo.xml
@@ -0,0 +1,135 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/official/4.33/Demos/ClientServer/Server/deny.conf b/official/4.33/Demos/ClientServer/Server/deny.conf
new file mode 100644
index 0000000..e69de29
diff --git a/official/4.33/Demos/ClientServer/Server/htdocs/about.html b/official/4.33/Demos/ClientServer/Server/htdocs/about.html
new file mode 100644
index 0000000..e697743
--- /dev/null
+++ b/official/4.33/Demos/ClientServer/Server/htdocs/about.html
@@ -0,0 +1,35 @@
+ || Short description
+
+Back to main page
+
+Short description
+1. Introduction
+
+FastReport server provides many features for server side reporting in
+internet/intranet networks. FastReport 3 is the kernel of the
+reporting engine. Fast and poweful server engine use
+Hypertext Transfer Protocol (HTTP, RFC 2068). The FastReport Server
+completely autonomous and does not require using other HTTP server (Apache, IIS etc).
+Detailed expected features list you will to read here.
+2. FastReport Server Purpose
+
+
+- Internet/intranet reporting
+
- Web-development
+
- End-user solutions providing functionality for business analytics, financials, human capital management, operations, corporate services
+
- Industrial client-server application
+
+
+3. Requirements
+Operation system: Microsoft Windows NT4/2000/2003
+ Server.
+ Network: based on TCP/IP protocol.
+
+4. Feedback
+All wishes, bug-reports and opinions send to e-mail.
+
+Back to main page
+
+
+