Muito útil também na analise das informações de um DBGrid, um recurso que este componente também possibilita é o uso de imagens em agregadas à colunas e valores do mesmo. Para configurar o recurso de imagens, adicione ao formulário um componente ImageList da paleta de componentes Win32 e com um duplo clique sobre o mesmo, utilize o botão “Add” para adicionar dois ícones que utilizaremos na representação de aprovado ou reprovado quanto a nota média obtida pelo aluno. Os ícones poderão normalmente ser encontrados nos diretório “C:\Arquivos de Programas\Arquivos Comuns\Borland Shared\Images\Buttons”.
Após adicionados os ícones, vá até o evento DrawColumnCell do gdRegistros, onde criamos a pouco as linhas de código responsáveis por zebra o DBGrid. Os códigos de adição de imagens serão conciliados aos códigos já adicionados, onde o evento deverá ter o seguinte código exibido na Listagem 3.Listagem 3. Utilizando imagens no DBGrid
procedure TfrmPrincipal.gdRegistrosDrawColumnCell(Sender: TObject;const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
bitmap : TBitmap;
fixRect : TRect;
bmpWidth : integer;
imgIndex : integer;
begin
//Deixa o DBGrid Zebrado
if not Odd (cdsRegistros.RecNo) then
if not (gdSelected in State) then
begin
gdRegistros.Canvas.Brush.Color := clSilver;
gdRegistros.Canvas.FillRect(Rect);
gdRegistros.DefaultDrawDataCell(Rect,Column.Field,State);
end;
//Incrementa as inagens no DBGrid
fixRect := Rect;
if Column.Field = cdsRegistrosNotaMedia then
begin
//Utilizaremos uma condiçao simulando a média de aprovação 8
if cdsRegistrosNotaMedia.Value >= 8 then
imgIndex := 0
else
imgIndex := 1;
//Criar em runtime um TBitmap
bitmap := TBitmap.Create;
try
//Selecionando a imagem...
ImageList1.GetBitmap(imgIndex,bitmap);
//Fixar as dimensões do bitmap
bmpWidth := (Rect.Bottom - Rect.Top);
fixRect.Right := Rect.Left + bmpWidth;
//Desenhar o bitmap (imagem)
gdRegistros.Canvas.StretchDraw(fixRect,bitmap);
finally
//Limpa o TBitmap
bitmap.Free;
end;
//Ajustar o espaço do Retângulo para a imagem
fixRect := Rect;
fixRect.Left := fixRect.Left + bmpWidth;
end;
//Desenhar o texto no Grid
gdRegistros.DefaultDrawColumnCell(fixRect,DataCol,Column,State);
end;
Ao executar agora nossa aplicação, observe que o Grid ficou organizado de uma forma bem diferente, onde todas as médias de alunas iguais ou acima de 8 foram agregadas a uma imagem e o restante dos resultados a um outro Bitmap representando que os mesmos foram reprovados (Figura 5).
Figura 5. Aparência do DBGrid após implementação do uso de imagens
Opções do DBGrid
Ao selecionar o DBGrid observe uma propriedade chamada Options, na qual poderemos ainda fazer uma série de configurações na aparência do DBGrid. Irei apresentar algumas das opções mais utilizadas:
- dgEditing: deixe esta opção habilitada com True. É responsável por permitir a edição e cadastro de registros diretamente no Grid, recurso que no caso desta aplicação está sendo utilizado por não termos uma tela especifica para cadastros e edições.
- dbTitles: recurso onde você poderá optar entre exibir ou ocultar a linha de apresentação dos títulos do DBGrid, deixe-a como True.
- dgIndicator: permite que você escolha em exibir ou não a seta de indicação na linha do Grid que está selecionada. Altere o recurso para False.
- dgColLines: nesta opção você poderá configurar se deseja exibir ou ocultar as linhas das colunas do DBGrid. Deixe habilitada como True esta função.
- dgRowLines: altere esta opção para False e observe que as linhas entre os registros do DBGrid não estarão mais sendo exibidas.
- dgMultiSelect: propriedade que permite a configuração de permitir que o usuário selecione mais de uma linha por vez no DBGrid. Altere a opção para True.
Após estas configurações execute sua aplicação novamente e verifique uma aparência diferenciada da qual obteve na execução anterior. A aparência do Grid será semelhante a imagem ilustrada na Figura 6.
Figura 6. DBGrid modificado através da propriedade Options
Conclusão
Vimos nestes post formas praticas e interessantes de trabalhar e customizar a aparência do componente DBGrid em suas aplicações. Estas dicas aqui mostradas foram poucas comparado com o grande número de situações e customizações possíveis ao componente, fica então o desafio de você mesmo descobrir novos recursos, como por exemplo implantação de campos Lookup em um DBGrid ou ainda em tempo de execução estar adicionando outros componentes em Runtime como por exemplo um CheckBox. Grande abraço e até a próxima.