Ir para conteúdo
Fórum Script Brasil
  • 0

Como Colocar Uma Figura No Fundo De Um Grid/dbgrid


Guest Carlosjunior

Pergunta

Guest Carlosjunior

aí galera, alguém sabe colocar uma figura no fundo de um grid/dbgrid??

qm saber favor enviar p mim por email

carlosjunior1983@hotmail.com

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0
Guest --Jonas --
aí galera, alguém sabe colocar uma figura no fundo de um grid/dbgrid??

qm saber favor enviar p mim por email

carlosjunior1983@hotmail.com

Para visualizar uma imagem em um DBGrid, você vai ter que criar um descendente dele que aceite essas figuras. O

código está abaixo:

unit DBPicGrd; 
interface 
uses 
  DBGrids, DB, DBTables, Grids, WinTypes, Classes, Graphics; 

type 
  TDBPicGrid = class (TDBGrid) 
    protected 
    procedure DrawDataCell(const Rect: TRect; Field: TField; State:
    TGridDrawState); override; 
  public 
    constructor Create (AOwner : TComponent); override; 
  published 
    property DefaultDrawing default False; 
end; 

procedure Register; 

implementation 

constructor TDBPicGrid.Create (AOwner : TComponent); 
begin 
  inherited Create (AOwner); 
  DefaultDrawing := False; 
end; 

procedure TDBPicGrid.DrawDataCell (const Rect: TRect; Field: TField; State: TGridDrawState); 
var 
  bmp : TBitmap; 
begin 
  with Canvas do 
  begin 
    FillRect(Rect); 
    if Field is TGraphicField then
      try 
        bmp := TBitmap.Create; 
        bmp.Assign (Field); 
        Draw (Rect.Left, Rect.Top, bmp); 
      finally 
        bmp.Free; 
      end 
    else 
      TextOut (Rect.Left, Rect.Top, Field.Text); 
  end; 
end; 

procedure Register; 
begin 
  RegisterComponents ('Custom', [TDBPicGrid]); 
end; 

end.

Editado por Micheus
Adicionado o delimitador de código [code] [/code]. Lembre-se de utilizá-lo para melhor visualização
Link para o comentário
Compartilhar em outros sites

  • 0
aí galera, alguém sabe colocar uma figura no fundo de um grid/dbgrid??

procedure TDBPicGrid.DrawDataCell (const Rect: TRect; Field: TField; State: TGridDrawState); 
var 
  bmp : TBitmap; 
begin 
  with Canvas do 
  begin 
    FillRect(Rect); 
    if Field is TGraphicField then
      try 
        bmp := TBitmap.Create; 
        bmp.Assign (Field); 
        Draw (Rect.Left, Rect.Top, bmp); 
      finally 
        bmp.Free; 
      end 
    else 
      TextOut (Rect.Left, Rect.Top, Field.Text); 
  end; 
end;

Jonas, por esta parte do código você está sugerindo o desenho de uma imagem em uma coluna do DBGrid. Mas, pelo que o colega Carlosjunior postou (ele disse no fundo de um DBGrid), parece que o que ele quer mesmo é uma espécie de "marca d'água" no DBGrid.

Isto é um pouquinho mais complexo - não lembro-me de ver um componente deste, com esta característica.

Dica: Apenas a título de informação, o procedimento para desenho de uma imagem numa determinada coluna de um DBGrid não exige que tenha que ser criado um componente para este fim. Basta escrever o procedimento no evento OnDrawColumnCell (segundo o help, OnDrawDataCell é obsoleto - está mantido apenas para compatibilidade) e alterar a propriedade DefaultDraw para False.

Abraços

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...