Fórum Imagem no DBgrid #370558

18/05/2009

0

OLá pessoal eu tenho alguns Dbgrid em meu sistema e gostaria de adicionar alguns icones em colunas dos dbgrid...

Tipo

tenho o dbgri do cadastro de clientes eu crio uma coluna sem vinculo com a tebla q nessa coluna gostaria q aparecesse uma imagem de um icone tudo isso sem vinculo com a tabela....

alguem sabe uma formula de fazer isso....


Tchucky

Tchucky

Responder

Posts

21/05/2009

Lehapan

No evento DrawColumnCell do DBGrid escreva:
var
  bmpImagem: TBitmap;
  CaminhoImg: string;
  PosLeft, PosTop: integer;
begin
  if  UpperCase(Column.FieldName) = UpperCase(´Imagem´) then
    begin
      if  Column.Field.AsString <> ´´ then
        begin
          { Column.Field.AsString deve conter o nome do arquivo. Exemplo: Imagem.bmp}
          CaminhoImg := ´C:\´ + Column.Field.AsString;

          if  FileExists( CaminhoImg ) then
            begin
              bmpImagem := TBitmap.Create;
              bmpImagem.LoadFromFile( CaminhoImg );

              DBGrid.Canvas.CopyRect( Rect, bmpImagem.Canvas,
                Classes.Rect(0, 0, bmpImagem.Width, bmpImagem.Height) );

              FreeAndNil( bmpImagem );
            end
          else
            begin
              DBGrid.Canvas.FillRect( Rect );
              DBGrid.Canvas.Pen.Style := psClear;
            end
          ;
        end
      ;
    end
  else
    begin
      DBGrid.Canvas.FillRect( Rect );
      DBGrid.Canvas.Font.Size := 8;

      if  Column.Alignment = taRightJustify then
          PosLeft :=
            Rect.Right - DBGrid.Canvas.TextWidth(Column.Field.AsString) - 4
      else
          PosLeft := Rect.Left + 2
      ;

      PosTop := Rect.Top + Round( (Rect.Bottom - Rect.Top) / 2 ) - 6;

      DBGrid.Canvas.TextOut( PosLeft, PosTop , Column.Field.AsString );
    end
  ;
end;


Obs.: você deve aumentar o tamanho da fonte do DBGrid para aumentar o Height das linhas.

espero ter ajudado.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar