DBGrid com Imagens

By Elton Conz

Esta é uma dica muito simples mas que produz um efeito muito legal.

Já encontrei vários programas que, ao mostrar determinados dados em um DBGrid, pecavam pela falta de clareza. Por exemplo: Para mostrar se um cadastro estava ativo ou não, apresentava no grid uma coluna que era preenchida com Sim / Não.  Errado? Não. Mas você concorda que pode ficar melhor não é?

Então ai vai minha dica para aperfeiçoar suas aplicações:

1. Estou partindo do ponto em que você ja tem seu ClientDataSet vinculado a um DataSource o qual ja se encontra vinculado a um DBGrid. No exemplo o ClientDataSet se chama TabAux e o DBGrid se chama Grade.

2. Insira um TImageList no seu form e adicione duas imagens.

Você pode baixar as imagens clicando aqui

TImageList

3. No evento OnDrawColumnCell do seu DBGrid escreva o seguinte código:

if Column.Field=TabAuxATIVO then
begin

Grade.Canvas.FillRect(Rect);

// Desenha o Quadrado
ImageList1.Draw(Grade.Canvas,Rect.Left+10,Rect.Top+1,0);

// Desenha o check sobre o quadrado quando ativo = ‘S’
if TabAuxATIVO.Text=‘S’ then // Cadastro está ativo
ImageList1.Draw(Grade.Canvas,Rect.Left+10,Rect.Top+1,1);
end;

4. O Resultado ficará assim

DBGrid com Imagem

Espero que aproveite esta dica. Ela é simples, mas da um toque mais profissional para a sua aplicação.

categoriaDBExpress, Dicas, TCanvas commentoNo Comments datafevereiro 11th, 2010
Read All

Utilizando DBExpress de uma Maneira Fácil

By admin

Artigo enviado por: Marcio F. Cruz

DBExpress, segundo meus testes, é a melhor tecnologia para comunicação com banco de dados. Mas, infelizmente, exige a configuração de vários parâmetros e manipulação de vários componentes visuais.

Pensando neste problema, resolvi criar um componente que contém um conjunto de classes, para facilitar a vida do programador em trabalhar com esta maravilhosa tecnologia.

Procurei criar as classes da melhor maneira possível, com os nomes dos métodos e propriedades o mais parecido possível com o que conhecemos e utilizamos em BDE, Zeos, ADO e mesmo no DBExpress.
Neste artigo, descreverei como instalar e fazer uma aplicação simples. Espero que seja útil para a comunidade e, talvez, os pacotes e classes de suas regras de negócio a utilizem.

Passo 1

Download http://sourceforge.net/projects/dddbxfacil/
Este pacote comtém o componente dddbxfacil com suas classes, bem como uma aplicação simples para utilizá-la.

Passo 2

Criar arquivo de configuração. Este arquivo, já está contido no pacote de exemplo e, ele contém a estrutura que é usada pelo dbconnections.ini e, serve para indicar os parâmetros para conexão ao banco de dados. Eu não costumo deixar o login e password contido neste arquivo mas, nada impede de se inserir nele.

A configuração que defini, foi para o Oracle mas, pode ser para qualquer banco que o Dbexpress é compatível que, acho que são todos:

[NOMESECAOCONFIGORACLE]
CONNECTIONNAME=OracleConnection
GETDRIVERFUNC=getSQLDriverORACLE
VENDORLIB=oci.dll
LibraryName=dbxora30.dll
DriverName=Oracle
HostName=
Database=
User_Name=
Password=
BlobSize=-1
ErrorResourceFile=
LocaleCode=0000
Compressed=False
Encrypted=False

Passo 3

No uses de sua unit, vamos inserir as seguintes units:
DB, DBTables, ddcomumDBX, ddconexaoDBX, ddsqlDBX, ddproviderDBX.

Passo 4

Vamos no private e, colocar as seguintes “variáveis”:

ConexaoDBX: TConexaoDBX;
ProviderDBX: TProviderDBX;
SqlDBX: TsqlDBX;

Passo 5

Este passo é opcional mas, para mostrar melhor o funcionamento da classe, criaremos um método chamado MeuDataChange, novamente apontar ele.

//No private:
procedure MeuDataChange(Sender: TObject; Field: Tfield);

//No implementation
procedure TForm2.MeuDataChange(Sender: TObject; Field: TField);
begin
// Nao é necessário colocar teste para ver se tabela tá aberta, DisableControls, etc…

grbTesteGrid.Caption := ‘Testando o grid. Agora são ‘+
FormatDateTime(‘dd/mm/yyyy hh:nn:ss’, now);
end;

Passo 6

Precisamos instanciar as variáveis que criamos no private. Para isso, criei procedimentos para facilitar isso. No formShow, colocaremos o seguinte código:

ddconexaoDBX.ConexaoDBXInit(ConexaoDBX,  nil,
IncludeTrailingPathDelimiter(ExtractFilePath(Application.ExeName))+‘configuracao.ini’,
‘NOMESECAOCONFIGORACLE’);

ConexaoDBX.Login := ‘usuario’;
ConexaoDBX.Senha := ’senha’;

ddproviderDBX.ProviderDBXInit(ProviderDBX,
ConexaoDBX,
DBGrid1,
‘ROWID’,
true,
MeuDataChange);

ddsqlDBX.SqlDBXInit(SqlDBX, ConexaoDBX);

Passo 7

Exemplo de código para executar busca no banco de dados:

procedure TForm2.btnProcurarClick(Sender: TObject);
var
Retorno: TProviderRetorno;
begin
ConexaoDBX.ConectarSeDesconectado;

ProviderDBX.ClearAll;
with ProviderDBX, ProviderDBX.LinhaSQL do
begin
Add(‘SELECT * FROM TABELA’);

Retorno := OpenDQL;
end;
end;

Passo 8

Exemplo de evento de inclusão:

procedure TForm2.btnincluirClick(Sender: TObject);
var
iProximoCodigo: integer;
begin
ConexaoDBX.ConectarSeDesconectado;

// Pegar Próximo Codigo
with SQLDBX do
begin
setLinhaSQL(‘SELECT MAX(CODIGO) PROXIMO FROM TABELA’);

OpenDQL;

iProximoCodigo := SQLDQl.FieldByName(‘PROXIMO’).AsInteger+1;
end;

ConexaoDBX.Transacao_Abrir;

try
// Incluir
with SqlDBX do
begin
ClearAll;

with LinhaSQL do
begin
Add(‘INSERT INTO TABELA (CODIGO, DESCRICAO)’);
Add(‘VALUES’);
Add(‘(:P_CODIGO, :P _DESCRICAO)’);
end;

AddParam(ftInteger, ‘P_CODIGO’, iProximoCodigo);
AddParam(ftString, ‘P_DESCRICAO’, ‘nome ‘+IntToStr(iProximoCodigo));

ExecDML;
end;

ConexaoDBX.Transacao_Commit;
except
on E:Exception do
begin
ConexaoDBX.Transacao_RollBack;

ShowMessage(E.Message);
end;
end;
end;

No arquivo que é baixado do sourceforge, este exemplo já está contido.

Qualquer dúvida, podem me escrever para meu e-mail que eu respondo:

programador@marciofcruz.com

categoriaComponentes, DBExpress commento2 Comments datamaio 4th, 2009
Read All

Dica : Turbo Delphi e DBExpress com MySQL

By admin

Vou mostar nesse artigo como acessar o MySQL com o componente DBExpress que já vem junto por padrão na IDE do Turbo Delphi. Para realizar a conexão com o MySQL precisamos de duas DLL’s.

São elas:

  • dbxopenmysql50.dll (Driver para conectar no MySQL versão 5)
  • libmysql.dll (É interessante baixar a última versão).

Os links para baixar são:

Após baixar as duas dll’s você pode descompactar as duas na pasta do seu projeto (onde estão os seus arquivos .pas, .dfm e .exe).

Depois de executado esses passos temos que editar um arquivo .ini do DBExpress para que ele possa reconhecer o novo Driver para o MySQL 5 ( que no nosso caso é o dbxopenmysql50.dll ). É muito fácil temos que ir no seguinte caminho “C:\Arquivos de programas\Borland\BDS\4.0\dbExpress” e editar o seguinte arquivo dbxdrivers.ini.

(Se o caminho do arquivo apresentado aqui, não for o mesmo que o seu. Você pode utilizar o Localizar do windows para procurar onde está o dbxdrivers.ini no seu computador).

Na seção ” [Installed Drivers] ” adicione a seguinte linha ao final da seção: ” OpenMySQL50=1 “.

[Installed Drivers]
Interbase=1
MYSQL=1
ASA=1
OpenMySQL50=1

Agora precisamos colocar a seguinte seção no arquivo:

[OpenMySQL50]
LibraryName=dbxopenmysql50.dll
GetDriverFunc=getSQLDriverMYSQL50
VendorLib=libmysql.dll
HostName=localhost
Database=Nome_da_Minha_Database
User_Name=Login_do_Meu_Usuario
Password=Senha_do_Meu_Usuario

Pontos para observar nessa seção: em LibraryName estamos declarando o nome da DLL (driver) com o banco que baixamos, a mesma coisa estamos fazendo em VendorLib. As três últimas linhas são as linhas que você vai colocar os dados de acesso da sua database.

Tudo Pronto!! :)

Passos Adicionais:

Teste de Acesso ao MySQL no Turbo Delphi com o DBExpress
Primeiro vamos criar um novo projeto:

Novo projeto no Delphi

Novo projeto no Delphi

Após isso recomendo salvar o seu projeto hehe.

Vamos agora adicionar os seguintes componentes no nosso form.

  • dbExpress -> TSQLConnection
  • Data Access -> TDataSetProvider
  • dbExpress -> TSQLTable
  • Data Access -> TClientDataSet
  • Data Access -> TDataSource

E para testarmos vermos o resultado:

  • Data Controls -> TDBEdit

Configurações de Acesso a Database do MySQL

Para abrir o editor de configuração é só darmos 2 cliques em cima do componente TSQLConnection. Agora vamos cliar no botão com um “+” para criar uma nova conexão.

Criando uma nova conexão no DBExpress

Criando uma nova conexão no DBExpress

Escolhemos o Driver OpenMySQL50 e informamos o nome de nossa conexão.

Agora temos que entrar com os dados de acesso ao banco de dados, como segue a imagem de exemplo:

Configurando o DBExpress e Testando a Conexão

Configurando o DBExpress e Testando a Conexão

Como observado no passo 5 da imagem, podemos clicar no botão “v” e verificar se a conexão já está funcionando. Se der algum erro nessa parte, eu recomendo reler este artigo novamente para procurar onde está o erro.

Se retornar sucesso podemos clicar em OK e retornar para o nosso form. Uma dica legal nessa parte do artigo é clicarmos no nosso objeto TSQLConnection e no Object Inspector na propriedade LoginPrompt trocarmos de true para false. Com isso o Turbo Delphi não vai pedir para digitarmos a senha toda hora.

Depois dos passos acima executados, vamos setar as configurações nos outros componentes para acessarmos a Database. Precisamos de muita atenção agora.

Clicar no componente TSQLTable e no object inspector na propriedade SQLConnection selecionar SQLConnection1 e em TableName selecionar alguma tabela do nosso banco de dados.

Agora vamos clicar no componente TDataSetProvider e na propriedade DataSet vamos selecionar a opção SQLTable1.

No componente TClientDataSet vamos setar duas propriedades, a primeira é ProviderName vamor selecionar a opção DataSetProvider1 e na propriedade Active vamos selecionar a opção true.

Já no compoente TDataSource vamos na propriedade DataSet e selecionamos a opção ClientDataSet1.

Agora por último vamos exibir alguma informação da database no nosso componente DBEdit1. Na propriedade DataSource vamos selecionar a opção DataSource1 e na propriedade DataField vamos selcionar alguma coluna da tabela que informamos no componente TSQLTable. Após selecionar o nome da coluna o dado já vai aparecer no DBEdit. :)

Após isso podemos dar um F9 e compilar o nosso projeto. Ou ainda podemos colocar os outros componentes da Seção Data Controls no nosso formulário. O processo é basicamente igual ao que fizemos no nosso DBEDit.

categoriaComponentes, DBExpress, Delphi, MySQL commento1 Comment datanovembro 10th, 2008
Read All