Artigo Clube Delphi Edição 38 - Kylix 3 Open Edition turbinado
Artigo da Revista Clube Delphi Edição 38.
Você não gostou da qualidade deste conteúdo?
(opcional) Você gostaria de comentar o que não lhe agradou?

Atenção: por essa edição ser muito antiga não há arquivo PDF para download. Os artigos dessa edição estão disponíveis somente através do formato HTML.
Kylix 3 Open Edition turbinado
Acrestente banco de dados, internet e relatórios
Neste artigo, mostraremos como instalar novas funcionalidades no Kylix 3 Open Edition (K3OE), a versão livre do Kylix. O K3Oe não possui os componentes dbExpress e Indy nem componentes para relatórios, porém não pe difícil instalá-los, pois existem versões open source desses componentes. A vantagem é que você terá uma excelente ferramenta de desenvolvimento com muito mais recursos e componentes, eo melhor: legalmente. Neste artigo usaremos o Kylix 3 for Delphi, mas os mesmos procedimentos mostrados valem para a versão C++ do Kylix 3.
Ambiente e preparação
Para este artigo utilizei Conectiva Linux 8 (Kernel 2.4.18) ee o MySQL 3.23, mas acredito que você não terá problemas se utilizar outras distribuições do Linux ou outros bancos de dados que não o MySQL. No entanto lembre-se que oficialmente até aqui a Bolando só aprovou o Kylix 3 para rodar o Red Hat 7.3, Mandrake 8.2 ou Suse 7.3.
Nota: neste texto o caractere “-” (til) será usado para representar o diretório raiz onde o Kylix foi instalado. Assim, “-” significa /usr/local/kylix3, que é o diretório padrão onde o Kylix fica instalado.
Antes de começar, você deve instalar o K3OE e seu patch mais recente (até a data atual, o Update 2). O endereço para download e registro é www.borland.com.br/products/downloads/download_kylix.html (o arquivo tem aproximadamente 90 MB). É impotante verificar se a intalação foi concluída com sucesso – uma dica pe executar algum projeto de exemplo que vem com o Kylix (~/examples/delphi) ou escrever um projeto do tipo “Olá mundo”. Além disso, para acompanhar os exemplos, será necessário instalar o MySQL, sugiro que você instale a versão 3.23 que é mais estável e melhor suportada pelo Kylix.
Mostraremos como configurar a biblioteca FreeCLX para que dê suporte a novos recursos não disponíveis no K3oE (como o acesso a dados). Mostraremos ainda como instalar a biblioteca Zeos (também open source), de componentes para acesso direto a bancos de dados – uma alternativa ao uso do dbExpress. Veremos também como instalar a biblioteca indy e, para finalizar, instalaremos o aplicativo Report Manager, para a geração de relatórios.
Atenção: com as mudanças, o K3OE ficará bastante “incrementado”, porém lembre que qualquer aplicativo desenvolvido com o K3OE deverá seguir as regras da licença GPL (www.gnu.org/copyleft/glp.html). Portanto, o uso das informações apresentadas aqui é de responsabilidade de cada desenvolvedor.
FreeCLX
A biblioteca FreeCLX es´ta disponível para download no site soureforge.net/projetcs/freeclx. A versão atual é freeclx-k1-2.2.3-3.tar,gz, embora o site indique que o pacote seja para o Kylix 1, ele funciona perfeitamente no Kylix 3. descompacte o arquivo dentro do doretório - . Os pacotes que nos interessam são dataclx e visualdbclx, que não vêm com o K3OE. Os outros pacotes, pricipalmente o CLX e RTL, já estão instalados no Kulix e atualizados com as devidas correções, portanto não serão necessários.
Para o processo de compilação e instalação dos pacotes, é preciso adicionar o diretório e instalação ~/freeclx/dbclx/ ao library path (Tools|Enviroment Options>Library>Library path) e ao Browsing path (Tools|Enviroment Options>Library>Browsing path). Não esqueça que o símbolo “-” é apenas representativo – substituia-o pelo diretório real onde voccê instalou – substitua-o pelo diretório real onde você instalou o Kylix 3.
Há um pequeno bug no componente DBNavigator, que devemos corrigir antes de instalar os pacotes. Toda vez que o acrescentamos a um formulário, levantada uma exeção. Isso acontece porque internamente é feita uma tentativa de acessar um objeto que ainda não foi criado. Então, antes de compilar os pacotes, edite o arquivo ~/freeclx/dbclx/QDBCtrls.pas e vá à linha 3384, dentro da implementação do método TDBNavigator.EnabledChaged. substituia o código “if not (csLoading in ComponetState) then” por “if Assigned(FDataLink) then”.Veja o método depois da alteração:

Abra o arquivo ~/freeclx/dbclx/dataclx.dpk (veja a Figura 1). O Kylix vai informa que o arquivo está num formato antigo e pedirá a permissão para atualizá-lo (veja a Figura 2). Confirme sem preocupação. Depois compile o pacote mas não o instale, pois ele não é do tipo design-time. Em seguida abra o arquivo ~/freeclx/dbclx/visualdbclx.dpk e repita o processo.


Com issom no diretório ~/freeclx/dbclx você encontrará dois novos arquivos .so (bpldataclx.so e dplvisualdbclx.so). Copie-os para o diretório ~/bin – o linker vai precisar encontrá-los.
dbControls
o próximo passo é a instalaçao dos componentes dbControls. Baixe estes componentes no site www.ubicum.it/apasoft/download/dbcontrols.tgz e descompacte o arquivo dentro do diretório - . Adicione o caminho ~/dbControls ao Library path e ao Brownsing path.
No Kylix, abra o arquivo ~/dbControls/dbControls.dpk (veja a Figura 3), confirme a atualização e adicione o pacote ~/freeclx/dbclx/dataclx.dcp à seção Requires do projeto. Depois compile e instale o pacote.

Se você compilar o pacote sem adicionar o ~/freeclx/dbclx/dataclx.dcp, o Kylix vai adicionar os arquivos necessários da FreeCLX por conta própria, mas haverá conflito ao tentar instalar o zeasdbo. Caso você acidentalmente esqueça o passa anterior, feche o projeto e rote o script clean.sh do diretório ~/dbControls.. desistale o pacote (usando Component\Install Packages) se já tiver instalado, depois você poderá recompilar o pacote incluindo ~/feeclx/dbclx/dataclx.dcp na seção Requires e instalá-lo novamente. Sua barra de componentes ficará com as novas paletas Data Access dbExpress e Dta Controls (veja a Figura 4).

Mas ainda há um porém: os componentes SQLDataSet, SQLTable e SQLQuery são unidirecionais. Por isso usamos, juntamente com o dbExpress, o componente ClientDataSet. Ele monta um cache de dados, permitindo assim, navegar em ambas as direções e realizar operações de edição, filtro etc. mas para que isso funcione, é necessária a biblioteca MIDAS/DataSnap. Que não vem com o Open Edition, mas somente nas edições pagas do produto.
Uma solução é baixar o aplicativo Report Magager Designer 1.3 (esse aplicativo é open source e será visto adiante), que contém esse arquivo e diversos drivers para dbExpress. Copie o arquivo para o diretório ~/bin e crie o link simbólico libmidas.so para ele (usando o comando In –s Libmidas.so.1 libmidas.so).
Driver dbExpress para MySql
Baixe o patch_mysql.tar.gz do link ftp.borland.com/pub/kylix/devsupport e descompacte-o dentro do diretório ~/bin. Crie um link simbólico para o novo driver com o seginte comando:

Dica: o driver indicado é para a versão 3.23 do MySQL, mas é possível utilizar a versão 4. o endereço para download do driver dbExpress para o MySQL 4 é ddn.borland.com/article/0,1410,28510,00.html. Baixe e descompacte o arquivo mysql_4.0.1_driver.zip do CodeCentral dentro do diretório ~/bin. Crie um link simbólico para o novo driver com o seguinte comando:

Supondo que o MySQL esteja corretamente instalado e em execução, copie o arquivo /usr/lib/libmysqlclient.so.10.0.0 (substitua 10 por 11 quando se tratar da versão 4) para o diretório ~bin e crie mais um link simbólico com o nome libmysqlclient.so, usando o comando:

Para usar o dbExpress, é necessário criar e configurar dois arquivos-texto: um para configurar drivers (dbxdrivers.conf) e outro para conexões (dbxconnections.conf). Você deve criar esses arquivos dentro do diretório /usr/local/etc conforme veremos a seguir.
Exemplo de dbExpress com MySQL
Vamos realizar um teste dos componentes e do driver que instalamos. Entre no console e chame o MySQL Monitor:

Crie uma senha para o usuário root caso ainda não tenha feito isso:

Saia e entre novamente:

Crie um banco de dados exemplo:

Insira alguns dados:

Configure o arquivo dbxdrivers.conf:

Configure o arquivo dbxconnections.conf:

Crie um novo projeto no Kylix e acrescente os componentes SQLConneciont, SQLClientDataSet, DataSource e uma DBGrid. Monte o relacionamento entre os controles (SQLConnection <- SQLClientDataSet <- DataSource <- DBGrid).
No SQLConnection, se configurarmos a propriedade ConnectionName para EXEMPLO e LoadParamsOnConnect para True, os parãmetros serão lidos diretamente do arquivo dbxconnctions.conf. No entanto, algumas vezes esta técnica causa problemas (há alguns bugs), então é melhor definirmos as propriedades do SQLConnection como a seguir:

Altere a propriedade CommandText do SQLClientDataSet para “select * from ALUNOS”. Ative o SQLConnection (alterando a propriedade Connected para True) e o SQLClientDataSet (altere Active para True). Depois execute o programa.
Zeos
Uma alternativa ao uso do dbExpress é a biblioteca Zeos. Doferentemente do que acontece com dbExpress, existe um conjunto específico de componentes Zeos para cada bancos de dados. Na versão atual da Zeos, há componentes para MySQL, InterBase, PostgreSQL, DB2, Oracle e MS SQL Server. Com relação aos componentes data-aware, você pode utilizar os que se encontram na paleta Data Controls ou, se prefirir, utilizar alguns componentes com recursos interessantes desenvolvidos pela equipe do Zeos.
Visite o site sourceforge.net/projects/zeoslib e baixe a versão mais recente do zeos dbo (database objetcs), até o momento desta publicação, 5.4.1 (zeosdbo-5.4.1.zip). É importante que a instalação da FreeCLX já tenha sido realizada com sucesso.
Descompacte o arquivo no diretório ~/bin. Em seguida, adicione os diretórios ~/zeosdbo, ~/zeosdbo/dbase e ~/zeosdbo/common ao Library path e ao Browsing path.
Nota: ao compilar alguns pacotes, o Kylix informará que não encontrou a unit dsgnintf. Substitua esta declaração designIntf nas cláusulas uses que apresentarem este problema.
Compile e instale os pacotes básicos ~/zeosdbo/ZcommonK.dpk e ~/zeosdbo/ZdbwareK.dpk (nessa ordem). Como exemplo, incluiremos os compoenentes para MySQL, para PostgreSQL e InterBase. Instale os pacotes ~/zeosdbo/ZMySqlK.dpk e ~/zeosdbo/ZPgSqlK.dpk para acessar os dois primeiros. Já que o InterBase, o arquivo correspondente é ~/zeosdbo/ZLbSqlK.dpk.
Na versão 5.4.1 do Zeos, a compilação rtanscorre sem qualquer erro, mas a instalação termina mostrando: Error|Invalid Fild registration. Para solucionar o problema, edite o arquivo ~/zeosdbo/dbase/ZibSqlReg.pas e comente a linha 58, que executa a instrução RegisterFields ([TZBCDField]).
Você agora terá uma paleta Zeos Access na sua barra de componentes (veja a Figura 5).

Indy
Como vimos, a biblioteca Indy possui inúmeros componentes para se trabalhar com diversos protocoloes da internet. Você pode fazer download do arquivo IndyLinux_9_00_11_Src.TAR.gz no site www.nevona.com/indy/download. descompacte o arquivo dentro do diretório para ~/indy (usando o comando mv Source/ Indy/). Depois, aplique o comando chmod –R +rw indy para liberar a escrita nos arquivos. Copie todos os arquivos de extensão .so para o diretório ~/bin.
Adicione o diretório ~/indy ao Library path. Inicialmente, apenas compule o arquivo indy.dpk. não instale, pois não é um pacote do tipo design-time. Em seguida, compile e instale o arquivo dclindy.dpk. veja na Figura 6 as novas paletas instaladas.

Report Manager
O Report Manager é um aplicativo para o desenvolvimento de relatórios também open source e cross-platform, com recursos muito interessantes, como a exportação para o formatp PDF. Ele é dividido em dois ambientes: um aplicativo para o desenvolvimento dos relatórios e outro composto de componentes instalados no Kylix (segundo a mesma filosofia do Crystal Reports da Seagate).
Vamos primeiro instalar os componentes no Kylix. A versão 1.3 está disponível sob o nome reportman1_3.zip no site reportman.sourceforge.net. Crie um diretório chamado ~/reportman e descompacte o arquivo nesse novo local. O Report Manager é composto de alguns pacotes, como mostra a tabela a seguir.

De volta ao Kylix, adicione o diretório ~/reoirtman ao Library path. Compile e instale os pacotes rppack.dpk, rppackv.dpk e rppackdesign.dpk (nessa ordem). Ao final do processo, os componentes estarão instalados na paleta Reportman (veja a Figura 7).

Agora vamos instalar o aplicativo Report Manager Designet. Beixe a versão 1.3 para Linux (repmand-1_3.i386.tar.gz) do site reportman.sourceforge.net. crie um diretório chamado repmand dentrro de /apt e descompacte o arquivo nesse novo local. Nele estão vários drivers para dbExpress além da biblioteca libmidas.so.1
Finalmente, execute o script /opt/repmand/repmand.sh via console para carregar o Report Manager Designer (Figura 8). No Kylix, inclua o componente CLXRport em um formulário a aponte a propriedade FileName para o relatório desejado (arquivo.rep). depois chame e aponte a propriedade FileName para o relatório desejado (arquivo.rep). depois chame o método Execute do CLXReport para visualizar o relatório. No site reportman.sourceforge.net está disponível a documentação e as FAQs do produto.




