Como pintar imagens em células específicas de um TDBGrid

形式
Pascal
投稿日時
2019-03-13 05:14
公開期間
無期限
  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. // Selecionando uma imagem de acordo com o valor atual do campo (exemplo)
  14. if Column.Field.AsString = 'I' then
  15. // As imagens estão em componentes TImage nomeados "IMAGxxxx" abaixo
  16. TDBGrid(Sender).Canvas.Draw(Rect.Left + OffsetLeft,Rect.Top,IMAGIndisponivel.Picture.Graphic)
  17. else if Column.Field.AsString = 'E' then
  18. TDBGrid(Sender).Canvas.Draw(Rect.Left + OffsetLeft,Rect.Top,IMAGRemetido.Picture.Graphic)
  19. else if Column.Field.AsString = 'F' then
  20. TDBGrid(Sender).Canvas.Draw(Rect.Left + OffsetLeft,Rect.Top,IMAGFalha.Picture.Graphic);
  21. end;
  22. end;
ダウンロード 印刷用表示

このコピペの URL

JavaScript での埋め込み

iframe での埋め込み

元のテキスト