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

3. No evento OnDrawColumnCell do seu DBGrid escreva o seguinte código:
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

Espero que aproveite esta dica. Ela é simples, mas da um toque mais profissional para a sua aplicação.
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:
- Clique aqui e baixe a última versão do Zeos.
- 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.
- 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
- 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).
- Compile os arquivos na seguencia:
- ZCore100.bpl
- ZPlain100.bpl
- ZParseSql100.bpl
- ZDbc100.bpl
- ZComponent100.bpl
- ZComponentDesign100.bpl
- Clique no ZComponentDesign100.bpl e de install.
- Pronto!
Maiores detalhes clique aqui para uma documentação mais detalhada. Depois de instalado você terá os seguintes componentes:
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:
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.
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.
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.
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.
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.
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.
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:
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”:
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.
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:
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:
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:
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,
_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:
Dica : Visualizando HTML no Componente Memo
By admin
Nesta dica vamos ver como acessar um website através do Delphi e exibir o código HTML do mesmo, no componente TMemo. Para este exemplo está sendo utlizado o componente TWebBrowser que vai acessar o website e o código fonte em si. É possível fazer muitas coisas interessantes com o TWebBrowser até mesmo criar um navegador de Internet. Um detalhe adicional é que o componente TWebBrowser é baseado no Internet Explorer e a sua documentação está no site de desenvolvedores da Microsoft no seguinte endereço: url20.ca/z1979 vale a pena dar uma conferida e consultar tudo que é possível fazer.
Vamos ao código do nosso visualizador de HTML:
{
Sobre: Código de exemplo para mostrar como exibir e ler um documento HTML
de um website.
Autor: Dicas Delphi
Data: 19/12/2008
}
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, OleCtrls, SHDocVw, ComCtrls;
type
TfrmMain = class(TForm)
WebBrowser1: TWebBrowser; //utilizando o componente TWebBrowser
MemoCodFonte: TMemo;
Panel1: TPanel;
edtUrl: TEdit;
btnNavegar: TButton;
btnExibirCod: TButton;
Label1: TLabel;
procedure btnNavegarClick(Sender: TObject);
procedure btnExibirCodClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmMain: TfrmMain;
implementation
{$R *.dfm}
{Adiciona o código fonte de um website no memo}
//===================================================================
procedure TfrmMain.btnExibirCodClick(Sender: TObject);
//===================================================================
var
documentoAtivo : variant;
begin
//Acessando a interface do site aberto
documentoAtivo := WebBrowser1.Document;
//Adicionando o código HTML ao MEMO
MemoCodFonte.text := documentoAtivo.Body.OuterHTML;
end;
{Acessa o website}
//==================================================================
procedure TfrmMain.btnNavegarClick(Sender: TObject);
//==================================================================
begin
//Verifica se foi informado alguma URL
if edtUrl.Text <> ” then
begin
//Acessando o website informado no edit
WebBrowser1.Navigate(edtUrl.Text);
//Colocando a ampulheta do windows só pra saber que está executando o
//programa
Screen.Cursor := crHourGlass;
//Enquanto o site não é carregado totalmente fica no loop até o estado
//do ReadyState for ‘completo’
while WebBrowser1.ReadyState <> READYSTATE_COMPLETE do
begin
Application.ProcessMessages;
Sleep(0);
end;
//Site foi carregado, tira a ampulheta e coloca a seta no mouse novamente
Screen.Cursor := crDefault;
//Site foi carregado, libera o botão de vizualizar o código fonte
btnExibirCod.Enabled := true;
end
//Se nenhuma URL for informada dá uma mensage de erro, e dá focus no edit
else
begin
//Exbindo a mensagem
ShowMessage(‘Entre com uma URL’);
//Setando o focus no edit
edtUrl.SetFocus;
end;
end;
end.
A parte que estamos acessando o código do website e adicionando ano componente TMemo é na seguinte linha:
O código deste exemplo como sempre foi simplicado, mas existem coisas interessantes como no seguinte trecho:
//do ReadyState for ‘completo’
while WebBrowser1.ReadyState <> READYSTATE_COMPLETE do
begin
Application.ProcessMessages;
Sleep(0);
end;
Onde é dado um loop para verificar se o website foi totalmente carregado ou se ele está ainda fazendo ainda o download do conteúdo.
Segue o pacote com o executável e o código fonte para baixar:
http://www.dicasdelphi.com.br/wp-content/uploads/2008/12/vercodigosite.rar
URL reduzida desta dica: url20.ca/m1986
t+
Dica : Adicionar itens no componente TListBox
By admin
O componente TListBox nada mais é que um componente para exibir um conjunto de informações em uma lista com barra de rolagem. Este componente permite fazer a seleção de somente um único ítem ou de vários itens ao mesmo tempo. O TListBox é um dos componentes descendentes da classe TControl que possui mais de 70 componentes descendentes, tais como: TBitBtn, TButton, TCheckBox, TColorDialog, TComboBox, TForm, TFontDialog, TGroupBox, THeader, TImage, TLabel, TListBox, TMainMenu e TMediaPlayer, entre outros.
Podemos fazer coisas muito legais com o TListBox inclusive colocar imagens. Nessa dica irei mostrar como adicionar itens ao ListBox através do código.
Segue o código de exemplo:
{
Sobre: Código de exemplo para mostrar como adicionar valores no listbox
através do código.
Autor: Dicas Delphi
Data: 05/12/2008
}
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm2 = class(TForm)
ListBox1: TListBox;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
procedure TForm2.Button1Click(Sender: TObject);
var
//Declarando uma variavel string
itemNoList : string;
begin
//Adicionando a data e horario atual a variavel.
//
//A função DateTimeToStr converte o componente
//Now para string
//
itemNoList := DateTimeToStr(Now);
//Aqui estamos adicionando a data e horario
//armazenado na variável itemNoList em nosso
//listbox
ListBox1.Items.Add( itemNoList );
end;
end.
A linha que nos interessa neste código é a seguinte:
Esta instrução diz para adicionar um item (o valor da variável itemNoList ) no nosso componente ListBox1. E no exemplo que foi preparado a cada clique do mouse um novo item é adicionado ao componente TListBox programaticamente.
http://www.dicasdelphi.com.br/wp-content/uploads/2008/12/testelistbox.rar
URL reduzida deste artigo: url20.ca/p1978
t+
Dica : Cores Personalizadas no Delphi
By admin
Muitas vezes queremos trocar as cores de certos componentes e inclusive do próprio form no Delphi. Porém as cores que existem no Object Inspector não são muito legais ou não combinam uma com as outras. Pensando nisso o Delphi permite trocar as cores dos componentes através do código. Tudo isso com a ajuda de um componente chamado TColor. É muito fácil fazer a troca das cores, assim podemos deixar a nossa aplicação com um aspecto mais legal e bonito e inclusive podemos utilizar cores em hexadecimal do mesmo jeito que é feito no HTML.
Antes de mais nada eu quero indicar para todos se cadastrarem no site Kuler da adobe. Esse website permite você ter acesso a esquema de cores que combinam uma com a outra. Assim você nunca vai errar na ora de utilizar as cores na sua aplicação. Em adição a isso tudo você pode criar uma conta e com isso fazer os seus próprios esquemas de cores. Depois que você está com as cores escolhidas é só pegar o código em hexadecimal que o Kuler fornece e utilizar no Delphi. O endereço para o site Kuler é o seguinte:
Pelo o que andei verificando o Delphi não aceita cores com o código hexadecimal no formato HTML diretamente. Então para podemos utilizar as cores como no formato HTML temos uma função fornecida no site About que nos ajuda a realizar essa tarefa de colorir os componentes. O endereço do artigo é:
http://delphi.about.com/cs/adptips2001/a/bltip0301_5.htm
Bom vamos ver algo prático. O exemplo é bem simples, somente uns botões para trocar as cores do componente panel.
{
Sobre: Código de exemplo de como utilizar cores personalizadas.
Autor: Dicas Delphi – www.dicasdelphi.com.br
Data: 13/11/2008
}
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Panel1: TPanel;
Button2: TButton;
Button3: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
function HexToTColor(sColor : string) : TColor;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
//TCOlor – Componente do Delphi
//HexToTColor – Função que converte uma cor Hexadecimal
//no formato HTML para o formato utilizado em TColor.
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//Atenção: Verfique que a cerquilha # que é utilizada no HTML
//aqui ela não vai.
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Panel1.Color := TColor(HexToTColor(‘A1000A’));
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Panel1.Color := TColor(HexToTColor(‘BDAF7B’));
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
Panel1.Color := TColor(HexToTColor(‘CFD649′));
end;
{
Função fornecida pelo website
http://delphi.about.com/cs/adptips2001/a/bltip0301_5.htm
em 13/11/2008
}
function TForm1.HexToTColor(sColor : string) : TColor;
begin
Result :=
RGB(
StrToInt(‘$’+Copy(sColor, 1, 2)),
StrToInt(‘$’+Copy(sColor, 3, 2)),
StrToInt(‘$’+Copy(sColor, 5, 2))
) ;
end;
end.
Analisando esse código podemos ver que a linha que nos interessa é a seguinte:
Podemos ver nessa linha que o retorno da função HexToTColor está sendo enviado para o componente TColor. Outra coisa interessante é que o argumento na função HexToTColor é o valor em hexadcimal fornecida pelo site Kuler da Adobe.
O código para download do exemplo acima, juntamente com o executável está aqui:
http://www.dicasdelphi.com.br/wp-content/uploads/2008/11/teste_cores.rar
t+
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:
- http://www.justsoftwaresolutions.co.uk/files/dbxopenmysql5_dll.zip
- http://www.dll-download-system.com/dlls/libmysql.zip
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 “.
Interbase=1
MYSQL=1
ASA=1
OpenMySQL50=1
Agora precisamos colocar a seguinte seção no arquivo:
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:
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.
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:
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.



fevereiro 11th, 2010








