unit unit1;

{$mode delphi}

interface

uses
  Classes, SysUtils, FileUtil, LCLIntf, frxClass, frxDesgn, frxTableObject,
  frxGaugeView, frxZipCode, frxCellularTextObject, frxMap, frxChBox, frxCross,
  frxBarcode, frxDCtrl, frxCrypt, frxGradient, frxDMPExport, frxExportImage,
  frxExportText, frxExportCSV, frxExportHTML, frxExportHTMLDiv, frxExportODF,
  frxExportTXT, frxExportXML, frxExportRTF, frxExportDBF, frxExportPDF,
  frxExportDOCX, frxExportPPTX, frxExportXLSX, frxExportZPL, frxExportPS,
  frxExportPPML, frxlazdbfcomp, frxChartLaz, frxLazChartRTTI,
 {$IFDEF IncludeSQLite}
  frxlazsqlitecomp,
 {$ENDIF}
  Forms, Controls, Graphics, Dialogs, ExtCtrls, StdCtrls, ComCtrls;

type

  { TForm1 }

  TForm1 = class(TForm)
   {$IFDEF IncludeSQLite}
    frxLazSqLiteComponents1: TfrxLazSqLiteComponents;
   {$ENDIF}
    DescriptionM: TMemo;
    frxBarCodeObject1: TfrxBarCodeObject;
    frxBMPExport1: TfrxBMPExport;
    frxChartObject1: TfrxChartObject;
    frxCheckBoxObject1: TfrxCheckBoxObject;
    frxCrossObject1: TfrxCrossObject;
    frxCrypt1: TfrxCrypt;
    frxCSVExport1: TfrxCSVExport;
    frxDBFExport1: TfrxDBFExport;
    frxDesigner1: TfrxDesigner;
    frxDialogControls1: TfrxDialogControls;
    frxDOCXExport1: TfrxDOCXExport;
    frxDotMatrixExport1: TfrxDotMatrixExport;
    frxGaugeObject1: TfrxGaugeObject;
    frxGradientObject1: TfrxGradientObject;
    frxHTML4DivExport1: TfrxHTML4DivExport;
    frxHTML5DivExport1: TfrxHTML5DivExport;
    frxHTMLExport1: TfrxHTMLExport;
    frxJPEGExport1: TfrxJPEGExport;
    frxLazDBFComponents1: TfrxLazDBFComponents;
    frxMapObject1: TfrxMapObject;
    frxODSExport1: TfrxODSExport;
    frxODTExport1: TfrxODTExport;
    frxPDFExport1: TfrxPDFExport;
    frxPNGExport1: TfrxPNGExport;
    frxPPMLExport1: TfrxPPMLExport;
    frxPPTXExport1: TfrxPPTXExport;
    frxPSExport1: TfrxPSExport;
    frxReport1: TfrxReport;
    frxReportCellularTextObject1: TfrxReportCellularTextObject;
    frxReportTableObject1: TfrxReportTableObject;
    frxRTFExport1: TfrxRTFExport;
    frxSimpleTextExport1: TfrxSimpleTextExport;
    frxTIFFExport1: TfrxTIFFExport;
    frxTXTExport1: TfrxTXTExport;
    frxXLSXExport1: TfrxXLSXExport;
    frxXMLExport1: TfrxXMLExport;
    frxZPLExport1: TfrxZPLExport;
    Label6: TLabel;
    PreviewB: TButton;
    DesignB: TButton;
    GroupBox1: TGroupBox;
    GroupBox2: TGroupBox;
    Image1: TImage;
    ImageList1: TImageList;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    FileNameL: TLabel;
    Shape1: TShape;
    Tree: TTreeView;
    procedure DesignBClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure Label5Click(Sender: TObject);
    procedure PreviewBClick(Sender: TObject);
    procedure TreeChange(Sender: TObject; Node: TTreeNode);
    procedure TreeCustomDrawItem(Sender: TCustomTreeView; Node: TTreeNode;
      State: TCustomDrawState; var DefaultDraw: Boolean);
  private
     WPath: string;
  public

  end;

var
  Form1: TForm1;

implementation

uses
  db,dbf, unit2
 {$IFDEF IncludeSQLite}
  , sqlite3conn
 {$ENDIF}
  ;

{$R *.lfm}

{ TForm1 }

procedure TForm1.FormShow(Sender: TObject);
var
  I: Integer;
begin
  {$IFDEF Linux}
  frxReport1.IniFile := 'tmp/fr6.ini';
  {$ELSE}
  frxReport1.IniFile := '\SoftWare\Fast Reports';
  {$ENDIF}
  WPath := ExtractFilePath(Application.ExeName);
  for I:= 0 to ReportData.ComponentCount - 1 do
  begin
    if ReportData.Components[I] is TDbf then
      TDbf(ReportData.Components[I]).FilePath := WPath;
    {$IFDEF IncludeSQLite}
    if ReportData.Components[I] is TSQLite3Connection then
    begin
      TSQLite3Connection(ReportData.Components[I]).DataBaseName:=
      WPath + 'demo.sqlite3';
     // frxLazSqLiteComponents1.DefaultDatabase := WPath + 'demo.sqlite3';
      ReportData.sqlLite.Connected:= True;

    end;
    {$ENDIF}
  end;
  Tree.Items.Item[0].Selected := True;
  Label3.Caption := FR_VERSION;

end;

procedure TForm1.Label5Click(Sender: TObject);
begin
  OpenUrl(TLabel(Sender).Caption);
end;

procedure TForm1.PreviewBClick(Sender: TObject);
begin
  frxReport1.ShowReport;
end;

procedure TForm1.TreeChange(Sender: TObject; Node: TTreeNode);
begin
  if Node.StateIndex = -1 then
  begin
    Tree.FullCollapse;
    Node[0].Selected := True;
    frxReport1.LoadFromFile(WPath + IntToStr(Node[0].StateIndex) + '.fr3');
    FileNameL.Caption := ' Report file: ' + IntToStr(Node[0].StateIndex) + '.fr3';
    DescriptionM.Lines := frxReport1.ReportOptions.Description;
  end
  else
  begin
    DesignB.Enabled := True;
    PreviewB.Enabled := True;
    frxReport1.LoadFromFile(WPath + IntToStr(Node.StateIndex) + '.fr3');
    FileNameL.Caption := ' Report file: ' + IntToStr(Node.StateIndex) + '.fr3';
    DescriptionM.Lines := frxReport1.ReportOptions.Description;
  end;
end;

procedure TForm1.TreeCustomDrawItem(Sender: TCustomTreeView; Node: TTreeNode;
  State: TCustomDrawState; var DefaultDraw: Boolean);
begin
  if Node.Count <> 0 then
    Tree.Canvas.Font.Style := [fsBold]
  else
    Tree.Canvas.Font.Style := [];
end;

procedure TForm1.DesignBClick(Sender: TObject);
begin
  frxReport1.DesignReport;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 {$IFDEF IncludeSQLite}
  frxLazSqLiteComponents1 := TfrxLazSqLiteComponents.Create(Self);
  frxLazSqLiteComponents1.DefaultDatabase := ReportData.sqlLite;
 {$ENDIF}
end;


end.

