Advertisement
carlosfeitozafilho

Pintando imagens em células de um TDBGrid

Sep 28th, 2018
259
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 1.30 KB | None | 0 0
  1. procedure TFORMPrincipal.DoDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
  2. var
  3.   OffsetLeft: Byte;
  4. begin
  5.   inherited;
  6.   if Column.FieldName = 'nome_do_campo_no_dataset' then
  7.   begin
  8.     // As imagens são pintadas de forma centralizada dentro da célula do grid. Cada imagem, neste caso,
  9.     // tem 16x16. O OffsetLeft seria a posição horizontal da da imagem na célula. -8 está sendo usado
  10.     // porque as imagens tem 16 pixels de largura, logo, usa-se a metade disso (8). Ao mudar a largura
  11.     // da imagem, altere este número de forma que ele seja metade da largura da imagem a ser pintada
  12.     OffsetLeft := ((Rect.Right - Rect.Left) div 2) - 8;
  13.    
  14.     // Selecionando uma imagem de acordo com o valor atual do campo (exemplo)
  15.     if Column.Field.AsString = 'I' then
  16.       // As imagens estão em componentes TImage nomeados "IMAGxxxx" abaixo
  17.       TDBGrid(Sender).Canvas.Draw(Rect.Left + OffsetLeft,Rect.Top,IMAGIndisponivel.Picture.Graphic)
  18.     else if Column.Field.AsString = 'E' then
  19.       TDBGrid(Sender).Canvas.Draw(Rect.Left + OffsetLeft,Rect.Top,IMAGRemetido.Picture.Graphic)
  20.     else if Column.Field.AsString = 'F' then
  21.       TDBGrid(Sender).Canvas.Draw(Rect.Left + OffsetLeft,Rect.Top,IMAGFalha.Picture.Graphic);
  22.   end;
  23. end;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement