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

Instalando o ZeosLib no Turbo Delphi

By admin

O ZeosLib é um suite de componentes para você ter uma conexão nativa com banco de dados, ou seja, uma conexão sem drivers auxiliares como o ODBC. Isso entre outras coisas deixa seu sistema muito mais rápido e agiliza na fase de desenvolvimento. Aqui vamos ver como instalar no Turbo Delphi, porém não é muito diferente de outras versões.

Instalação do ZeosLib:

  1. Clique aqui e baixe a última versão do Zeos.
  2. Descompacte o ZeosLib, e cole a pasta no caminho “C:\Arquivos de programas\Borland\BDS\4.0\lib” o path ficará C:\Arquivos de programas\Borland\BDS\4.0\lib\ZEOSDBO-6.6.6-stable, gosto de deixar todos os componentes e bibliotecas aqui nesta pasta lib do Turbo Delphi por questões de organização, mas você pode colocar em outra pasta se quiser.
  3. Dentro do Turbo Delphi vá em Tools > Options > Library – Win32 > Library Path. Clique no  botão com “…” e ao abrir a tela do Library Path adicione os seguintes diretórios:
    • C:\Arquivos de programas\Borland\BDS\4.0\lib\ZEOSDBO-6.6.6-stable\src\component
    • C:\Arquivos de programas\Borland\BDS\4.0\lib\ZEOSDBO-6.6.6-stable\src\core
    • C:\Arquivos de programas\Borland\BDS\4.0\lib\ZEOSDBO-6.6.6-stable\src\dbc
    • C:\Arquivos de programas\Borland\BDS\4.0\lib\ZEOSDBO-6.6.6-stable\src\parsesql
    • C:\Arquivos de programas\Borland\BDS\4.0\lib\ZEOSDBO-6.6.6-stable\src\plain
  4. Entre no Turbo Delphi, clique em abrir e acesse a pasta: C:\Arquivos de programas\Borland\BDS\4.0\lib\ZEOSDBO-6.6.6-stable\packages\delphi10\ZeosDbo.bdsgroup (Obs: estou usando o package para o Delphi 10 pois foi o que ficou melhor compatível).
  5. Compile os arquivos na seguencia:
    • ZCore100.bpl
    • ZPlain100.bpl
    • ZParseSql100.bpl
    • ZDbc100.bpl
    • ZComponent100.bpl
    • ZComponentDesign100.bpl
  6. Clique no ZComponentDesign100.bpl e de install.
  7. Pronto!

Maiores detalhes clique aqui para uma documentação mais detalhada. Depois de instalado você terá os seguintes componentes:

zeos-lib-delphi

categoriaZeos commentoNo Comments datajaneiro 9th, 2010
Read All

Instalando o Componente EmbeddedWB no Turbo Delphi

By admin

Já pensou criar o seu próprio navegador ou utilizar funcionalidades de um browser? Você pode fazer isto como o componente EmbeddedWB. A dica aqui é para a instalação no Turbo Delphi mas para a instalação no Delphi não muda muito também. Para baixar este componente clique aqui.

Confira os passos abaixo para instalação:

  • Copiar o conteúdo do arquivo para a pasta Lib do Delphi ( C:\Arquivos de programas\Borland\BDS\4.0\lib )
  • Adicionar este caminho no LIB (Tools > Options > Library – Win32 > Library Path) :
    C:\Arquivos de programas\Borland\BDS\4.0\lib\EmbeddedWB_D2005\Source
    C:\Arquivos de programas\Borland\BDS\4.0\lib\EmbeddedWB_D2005\Source\Lib
  • Abra o arquivo EmbeddedWebBrowser_D2006.bdsproj
  • Dê BUILD ALL e, logo em seguida, INSTALL. Uma mensagem aparecerá dizendo que os componentes foram instalados
  • Feche o projeto, saindo sem salvar.

Após instalado você terá os seguintes componentes:

EmbeddedWB-Embedded-Web-Browser

categoriaEmbeddedWB commentoNo Comments datajaneiro 9th, 2010
Read All

GExperts – Aumente a sua Produtividade

By Elton Conz

O GExperts é um conjunto de ferramentas que tem por finalidade aumentar o índice de produtividade dos programadores. Eu utilizo este set de ferramentas a algum tempo, e posso dizer que ele facilita muitas tarefas do dia-a-dia de quem programa.

Trata-se de uma ferramenta Open Source e disponível para download no site www.gexperts.org. A instalação é bem simples. Basta executar o instalador, aqueles no estilo Next, Next, Finish. Existem versões para D-6, D-7, D-8, D-2005, D-2006, D-2007, D-2009 e D-2010.

Após a instalação o menu do GExperts ficará disponível no seu Delphi, como mostrado na imagem a seguir. Você pode acessá-lo tanto através do menu como através de teclas de atalho.

GExperts - Menu

GExperts - Menu

A seguir, mostrarei brevemente alguns dos recursos do GExperts.

1. Code ProofReader

É sempre cansativo ter de ficar digitando o nome das funções que você usa com grande frequencia. Ainda mais se elas tiverem nomes extensos. Basta declarar as regras do tipo:  Quando for digitado “mfc” então substitua por MinhaFuncao(_);  para que você precise digitar menos e com isso ganhar tempo.

GExperts - Code ProofReader

2. Set Tab Order

Uma forma simples e visual de organizar a ordem por onde o cursor irá passar na tela.

GExperts - Set Tab Order

3. Clean Directories

Seu projeto esta muito grande? Que tal apagar os arquivos temporários do seu projeto de forma extremamente simples? …

GExperts - Clean Directories

Resumo

O Gexperts possui uma grande quantidade de recursos para facilitar suas tarefas de programador. Além de ser uma ferramenta Open Source, ela possui variações para praticamente todas as versões do Delphi, o que indica que muita gente a utiliza. Não consegui, e nem conseguiria, mostrar todas as funcionalidades do GExperts neste post, mas a idéia é dar uma noção do que este set de ferramentas é capaz de fazer para te ajudar. Como usuário do GExperts, recomendo a todos a sua adoção. Agiliza, e muito, a tarefa de programar.

categoriaDicas, IDE, Utilitários commentoNo Comments datajaneiro 5th, 2010
Read All

Aprenda a Criar um Programa Paint Parecido com o do Windows

By admin

Artigo Enviado por Marcelo Tropicore

Aqui segue um exemplo de um programa inspirado no Paint do Windows .Nós vamos usar dois componentes Image da paleta Additional para representar a nossa área de desenho. Esse componente assim como todos os componentes visuais do Delphi tem uma propriedade chamada “Canvas” ,é essa propriedade que vai determinar a aparência dos componentes visuais como um Edit, Label, Image etc… Dentre as propriedades da Classe TCanvas umas das principais são: Brush, CanvasOrientation, ClipRect, CopyMOde, Font, Handle, Pen, PenPos, Pixels, Ellipse, FillRect, LineTo, MoveTo, Rectangle e uma porção de outras propriedades.

Vamos declarar duas variáveis globais do tipo TBitmap com os nomes Backbuffer e backbuffer2, essas variáveis vão gerar a nossa área de desenho (é claro que é preciso declarar outras variáveis globais para esse exemplo rodar direito,qualquer dúvida é só dar uma olhada no código fonte :) ) . Eu coloquei os dois Images dentro de um ScrollBox (paleta Additional) para poder redimensionar os Images sem interferir no tamanho do Form. Agora que começa a parte boa, hora de por a mão na maça, dentro do OnCreate do Form faça o seguinte.

print1print2

Para podermos usar os Backbuffers temos que criar com backbuffer:= TBitmap.Create; dimensionamos ele no mesmo tamanho do Scrollbox . O backbuffer.Canvas.Brush.Color:= ClWhite; é para determinar a cor de preenchimento do backbuffer. Na parte Image1.Canvas.FillRect(Rect(0,0,Image1.width, Image1.height)); vamos Limpar toda a área do Image e finalmente mandamos o backbuffer para o Image com : Image1.Picture.Assign(backbuffer);

Vamos repetir o mesmo procedimento para o backbuffer2 com algumas coisas adicionais.Aqui nós determinamos qual vai ser a cor transparente do backbuffer2 que vai pro Image2, e em muitas vezes o Image2 vai ficar sobre o Image1 como pode ver no evento de alguns botões das ferramentas com o comando Image2.BringToFront;. Assim quando o Image2 ficar sobre o Image1 vai ser possível ver o Image1 que está por baixo. Aqui no caso eu usei a cor branca.
Inicialize as outras variáveis como no exemplo do código fonte.

cor:= clBlack;
ferramenta:= ‘lápis’;
StatusBar1.Panels[1].Text:= ‘Lapis’;
Shape1.Brush.Color:= cor;

E por último vamos liberar as variáveis backbuffer e backbuffer2 da memória, por enquanto não precisamos mais delas ,pois já foram carregadas para os dois Images, portanto vamos trabalhar com eles.
As ferramentas que vão utilizar o Image2 são aquelas que desenham as linhas, retângulos e elipses. Dentro do Image2 vamos utilizar três eventos , o OnMouseDown, OnMouseMove e OnMouseUp. O componente Image é como um plano cartesiano, se você não matou as suas aulas de matemática sabe do que eu estou falando hehehe, ele tem duas dimensões , o X e o Y.

print3

No OnMouseDown nós vamos pegar a posição X e Y que o usuário clicou dentro do Image2. Dai fazemos o seguinte, Image2.Canvas.MoveTo(X,Y); , com isso nós movemos a posição do ponto de partida de uma linha por exemplo ,não começamos a desenhar ainda só dizemos a propriedade Canvas do Image onde vai começar a linha.

print4

No OnMouseMove nós usamos as variáveis X e Y do OnMouseDown e criamos uma linha (se o usuário selecionou essa ferramenta)dessa posição até a posição atual no OnMouseMove.
Image2.Canvas.MoveTo(posX2,posY2);
Note que antes de usar esse comando eu usei o Image2.Canvas.FillRect(Rect(0,0,Image2.Width,Image2.Height)); Para limpar o que já tinha sido desenhado antes, se não fizermos isso o Image2 vai desenhando um monte de linha uma atrás da outra, e fica um monte de linha desenhada no Image. Por isso eu usei dois Images , um para guardar o desenho e o outro para mostrar só o traçado da linha , se eu tivesse usado o Canvas.FillRect(); no Image1 a cada evento do OnMouseMove seria apagado todo o desenho principal.

print5

No OnMouseUp quando o usuário solta o botão do mouse , o programa já tem a posição inicial e final da linha e faz o desenho no Image1 que é o desenho principal.

if ferramenta = ‘linha’ then
begin
Image1.Canvas.MoveTo(posX2,posY2);
Image1.Canvas.LineTo(posX,posY);
posX3:= x;
posY3:= y;
end;

Algumas ferramentas não utilizam o Image2 pois desenha direto no Image1 que são a ferramenta Lápis, Borracha, Spray e os baldes de tinta. No caso dos baldes de tinta eu não consegui achar nenhum comando que conseguisse fazer igual ao do Paint do Windows, então tive usar uma lógica meio maluca mesmo pra conseguir chegar o mais peto que eu pude, se alguém sabe como fazer isso por favor me diga como hehehe.
Bom é isso aí pessoal , eu passei o básico de algumas funcionalidades do programa dentro da propriedade Canvas do componente Image, o programa tem outras funções bem legais como abrir imagens e poder editar, salvar e também redimensionar o tamanho da área de desenho.

Se alguém quiser entrar em contato para tirar dúvidas é só mandar no meu email,  marcelo_tropicore@hotmail.com

Baixe os Fontes Aqui: paint.

“Uma mente que se abre para uma nova idéia nunca voltará ao seu tamanho original”.

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

TMS Smooth Controls Pack para Delphi 2009 e C ++ Builder 2009

By admin

Olá, a Embarcadero está disponibilizando gratuitamente o TMS Smooth Controls Pack para todos os usuários registrados do C++ Builder e Delphi 2009. O TMS é um pack com 22 componentes que permitem a criação de interfaces ricas em Delphi, incluindo animações e estilos do Microsoft Office e do iPhone. Vale a pena conferir!

Para quem está interessado o link para pegar o TMS Smooth Controls Pack é o seguinte:

http://latam.embarcadero.com/br/delphi2009tms/

Já a URL reduzida é a seguinte: url20.ca/bexe

Endereço reduzido desta dica: url20.ca/yefe

t+

categoriaDelphi 2009, Novidades commento2 Comments dataabril 8th, 2009
Read All

Dica : Delphi Webinar – Porque migrar para Delphi 2009

By admin

Mais uma dica para os interessados no Delphi 2009. A embarcadero está promovendo um webinar gratuito mostrando as razões para migrar para o Delphi 2009.

Porque migrar para o Delphi 2009?

Porque migrar para o Delphi 2009?

Segue a descrição do evento:

A Embarcadero Technologies preparou pra você que ainda não migrou para Delphi 2009 um evento online para tirar todas as suas dúvidas.

Efetuando seu registro, você garante no mínimo 30% de desconto na compra de Delphi, RAD Studio, C++ Builder e InterBase, desconto válido para novas licenças e atualização.

Participe do evento online gratuito “Razões para migrar” e conheça todas as novidades que vão ajudar ainda mais o desenvolvimento de seus sistemas.

Serão 3 horas na prática de novos recursos incorporados ao Delphi desde a versão 7, como: novidades no IDE, linguagem, VCL, documentação, banco de dados, modelagem e muito mais.

Para participar, efetue o seu registro agora mesmo.”
O link para os interessados que queriam participar desse interessante Webinar é: https://www124.livemeeting.com/lrs/advancedsw_ccc/Registration.aspx?pageName=991mhh5r2rs7j70h

Vale a pena participar, para os interessados não esqueçam de enviar esta dica para outros programadores Delphi também. Pois quanto mais pessoas paticiparem maior será a sinergia entre a comunidade Delphi brasileira.

URL reduzida desta dica: url20.ca/adeq

t+

categoriaDelphi 2009, Eventos commentoNo Comments datamarço 13th, 2009
Read All

Dica : Migrar do Delphi 7 para o Delphi 2009

By admin

Dica quentíssima no site da Rede de Desenvolvedores da Embarcadero tem um documento de 60 páginas listando todas as diferenças desde o Delphi 7 até o Delphi 2009. Então se você está com dúvidas para baixar o Delphi 2009 por ser um lançamento da Embarcadero vale a pena conferir este documento e consultar todas as diferenças entre o Delphi 7 e o Delphi 2009. É bom isso também pois quando você realizar um upgrade e abrir os seus projetos antigos no Delphi 2009 você não tenha surpresas não muito legais, e se caso você tiver vai ser mais fácil encontrar solução para o problema de troca da versão 7 para a versão 2009.

Preview da Rede de Desenvolvedores da Embarcadero

Preview da Rede de Desenvolvedores da Embarcadero

O endereço para baixar este excelente documento é: http://cc.codegear.com/Item/26707 já a URL reduzida desta página se caso você quer enviar para os seus amigos é a seguinte: url20.ca/eked

Essa é uma leitura essencial para todos que pensam em migrar para o Delphi 2009.

URL reduzida desta dica: url20.ca/inix

t+

categoriaDelphi, Documentos commentoNo Comments datafevereiro 28th, 2009
Read All

Dica : Refatorar seu código Delphi

By admin

Bom essa é uma das super dicas que tem que ser dada. Existe um serviço na web para refatoração de códigos ou como no inglês code refactoring que possibilita você publicar o seu código para que outras pessoas vejam e ajudem você no processo de refatoração. Em adição, outros serviços são prestados como code highlighting para publicação em blogs e inclusive nos comentários. Muitas vezes quando temos um código feito em um Delphi com uma versão mais velha ou se no passado fizemos um código um tanto fora dos padrões e queremos reutilizar o mesmo, a refatoração é muito importante.

Em certas empresas existe muita pressão dos gerentes de projetos em cima dos programadores para concluirem o projeto em um tempo muito curto e com isso acaba ocasionando que o código acaba saindo sem qualidade. Pois sou defensor da seguinte lei que pretendo discutir ela em posts subsequentes, não sei se estou errado ou certo, mas criei a seguite lei para a programação em qualquer liguagem: A qualidade da aplicação é diretamente proporcional ao tempo investido. Sei que estou generalizando nesta idéia mas francamente isso é o que ocorre em vários lugares. Então quando fizemos algo as pressas para entregar algo pro cliente impaciente e depois paramos com calma para melhorar o código, o serviço deste website vai ser de grandíssima ajuda na refatoração. Principalmente para os programadores que trabalham sozinhos nos seus home offices.

Logotipo do website refactormycode.com

Logotipo do website refactormycode.com

Como este blog visa também ser para usuário leigos e avançados vou colocar aqui em linhas gerais o que vem a ser refatoração ou refactoring de acordo com o material disponível na wikipedia. “Refatoração (do inglês Refactoring) é o processo de modificar um sistema de software para melhorar a estrutura interna do código sem alterar seu comportamento externo.” Imagine você publicar uma parte de seu código em um website e outras pessoas vão poder opinar e melhorar o mesmo sem alterar o resultado final. Isso é muito bonito! Existem inúmeras outras vantagens e você deve conferir este serviço.

A seção dos códigos em Delphi está no seguinte endereço: http://refactormycode.com/refactorings/recent/delphi

O endereço oficial é: www.refactormycode.com

Já a url reduzida do Refactor my Code para você enviar para seus amigos ou enivar por celular é: url20.ca/s1976

Bom fica esta dica para facilitar a refatoração dos códigos em Delphi. Um serviço muito bom.

URL reduzida desta dica: url20.ca/k2003

t+

categoriaRefatoração commento2 Comments datafevereiro 23rd, 2009
Read All