Turbo Delphi Explorer - Instalar Componentes de Terceiros

A IDE do Turbo Delphi Explorer é uma versão free, com a limitação de não permitir a instalação de componentes de terceiros, além de não possuir um componente para gerar relatórios.

Então como gerar relatórios com a ferramenta Turbo Delphi Explorer na versão free se esta não permite instalação de componentes de terceiros ? Como acessar uma Base de Dados através do ZeosDBO ?
Respondo, vamos fazer em tempo de execução. Irei partir do pressuposto que se tenho um componente com os códigos fontes e fazendo uso dos mesmos em tempo de execução , não haverá problemas com a licença do Turbo Delphi Explorer. Será ???

Vou utilizar dois componentes de terceiros COM código fonte:
ZeosDBO versão 6.6.2 (compatível com Delphi 7) – para acessar dados no Firebird
FreeReport versão 2.32 (compatível com Delphi 7) – para gerar nosso relatório

Vou partir do presuposto que você já tem instalado o Turbo Delphi Explorer. Então vamos lá.
Com o Turbo Delphi Explorer aberto vá em Tools >> Options
A janela “Options” vai aparecer, faça o seguinte:
No lado esquerdo da janela de um duplo click na propriedade Environment Options, depois um duplo click em Delphi Options, selecione a propriedade Library – Win32, agora do lado direito em Library path click no botão ... para adicionar os paths dos nossos componentes, veja figura abaixo:



Muito bem, com os paths adicionados agora podemos referenciar nossos componentes em tempo de execução.

Vamos trabalhar com 02 Forms e 01 DataModule:

Name = Form1
–> Formulário Principal
Deverá ter uma chamada para o Form2, conforme abaixo:


procedure TForm1.mRelCidadeClick(Sender: TObject);
begin
Application.CreateForm(TForm2, Form2);
Form2.ShowModal;
end;


Name = DM
–> Data Module para acessar nossos dados
A clausula uses deverá ter o seguinte;


uses
SysUtils, Classes, Variants, ZConnection, ZDataset, ZStoredProcedure,
ZAbstractRODataset, ZAbstractDataset, ZDBCIntfs, DB;

Coloque um componente TDataSource e renomeie para DSCidade.
Nas declarações Private e Public faça o seguinte:


private
{ Private declarations }
FConexao: TZConnection;
FZQuery: TZQuery;
public
{ Public declarations }
property Conexao: TZConnection read FConexao write FConexao;
property ZQuery: TZQuery read FZQuery write FZQuery;
end;

No evento OnCreate do Data Modulo, faça o seguine:

procedure TDM.DataModuleCreate(Sender: TObject);
begin
// Criamos a conexão com o Banco de Dados
Conexao:=TZConnection.Create(Self);
Conexao.Database:='C:\Arquivos de programas\Prog\Dados\DB.FDB';
Conexao.Password:='password';
Conexao.Port:=3050;
Conexao.Protocol:='firebird-1.5';
Conexao.TransactIsolationLevel:=tiReadCommitted;
Conexao.User:='SYSDBA';
Conexao.Connected:=True;
// Criamos um objeto TQuery para consultarmos nossa Tabela
ZQuery:=TZQuery.Create(Self);
ZQuery.Connection:=FConexao;
end;


Name = Form2
–> Formulário para impressão do nosso Relatório
A clausula uses deverá ter o seguinte;


uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ZConnection, ZDataset, ZStoredProcedure, ZAbstractRODataset,
ZAbstractDataset, StdCtrls, ComCtrls, FR_DSet, FR_DBSet, FR_Class, FR_Desgn,
Grids, DBGrids, ExtCtrls;

Procedimento para Impressão, conforme abaixo:

procedure FrPrint(Title:string;FrmGrid:TForm);
var
fr: TfrReport;
ReportTitle,ColumnHeader: Tfrbandview;
MemoVT: Array of TfrMemoview;
TitleV ,dateV,pageV: TfrMemoview;
page: Tfrpage;
col: Integer;
Cont: Integer;
Left,Top,Width,Heigth: Integer;
TempLeft,TempWidth: Integer;

procedure PrintCabecalho(NrPag: Integer);
begin
left :=20;
top :=20;
width :=710;
heigth :=25;
fr.Pages.Add;
page := fr.Pages[NrPag];
ReportTitle := Tfrbandview.Create;
ReportTitle.BandType := btReportTitle;
ReportTitle.SetBounds(left,top,width,75);
page.Objects.Add(ReportTitle);
TitleV := TfrMemoview.Create;
Titlev.SetBounds(Left,top,width,30);
Titlev.Font.Name := 'Tahoma';
TitleV.Font.Size := 16;
TitleV.Memo.Add(title);
page.Objects.Add(TitleV);
dateV := TfrMemoview.Create;
dateV.SetBounds(Left,top + 40,width,30);
dateV.Font.Name := 'Tahoma';
dateV.Font.Size := 8;
dateV.Memo.Add('DATA:'+FormatDateTime('dd/mm/yyyy',Now));
page.Objects.Add(dateV);
Top:=115;
end;

procedure PrintRodape;
begin
pageV:=TfrMemoview.Create;
pageV.Font.Name:='Tahoma';
pagev.Font.Size:=10;
pagev.FrameWidth:=2;
pagev.FrameTyp:=24 ;
pageV.Memo.Add(' :: PÁGINA '+'[PAGE#]');
pagev.SetBounds(0,1025,750,20);
page.Objects.Add(pageV);
end;

begin
fr:=TfrReport.Create(FrmGrid);
fr.StoreInDFM := True;
DM.ZQuery.Open;
Cont:=0;
PrintCabecalho(Cont);
ColumnHeader:=Tfrbandview.Create;
ColumnHeader.BandType:=btColumnHeader;
ColumnHeader.SetBounds(left,top,width,900);
page.Objects.Add(ColumnHeader);
SetLength(MemoVT,5);
while not DM.ZQuery.Eof do
begin
col:=0;
// Campo Nome Cidade
TempLeft:=20;
MemoVt[col]:=TfrMemoview.Create;
MemoVt[col].Font.Name:='Tahoma';
MemoVt[col].Font.Size:=8;
MemoVt[col].Memo.Add(DM.ZQuery.FieldByName('CID_DESCRICAO').AsString);
MemoVt[col].FrameTyp:=0;
TempWidth:=300;
MemoVt[col].SetBounds(TempLeft,top,tempWidth,15);
Templeft:=TempLeft+tempwidth+10;
page.Objects.Add(MemoVt[col]);
// Campo UF
col:=1;
MemoVt[col]:=TfrMemoview.Create;
MemoVt[col].Font.Name:='Tahoma';
MemoVt[col].Font.Size:=8;
MemoVt[col].Memo.Add(DM.ZQuery.FieldByName('CID_UF').AsString);
MemoVt[col].FrameTyp:=0;
TempWidth:=50;
MemoVt[col].SetBounds(TempLeft,top,tempWidth,15);
Templeft:=TempLeft+tempwidth;
page.Objects.Add(MemoVt[col]);
//
Top:=Top+15;
DM.ZQuery.Next;
if (not DM.ZQuery.Eof) and (Top >= 1000) then
begin
Inc(Cont);
PrintRodape;
PrintCabecalho(Cont);
ColumnHeader:=Tfrbandview.Create;
ColumnHeader.BandType:=btColumnHeader;
ColumnHeader.SetBounds(left,top,width,900);
page.Objects.Add(ColumnHeader);
SetLength(MemoVT,5);
end;
end;
PrintRodape;
fr.ShowReport;
//fr.DesignReport;
fr.Free;
DM.ZQuery.Close;
end;


Coloque um Botão no formulário, chamando o procedimento de Impressão, conforme abaixo:

procedure TForm2.btImprimirClick(Sender: TObject);
begin
DM.ZQuery.Close;
DM.ZQuery.SQL.Clear;
DM.ZQuery.SQL.Add('SELECT * ');
DM.ZQuery.SQL.Add('FROM CIDADE');
DM.ZQuery.Open;
FrPrint('RELATÓRIO ::: TURBO DELPHI EXPLORER',Form2);
DM.ZQuery.Close;
end;

Procurar neste site . . .