Jump to content
Fórum Script Brasil
  • 0

Como Colocar Uma Figura No Fundo De Um Grid/dbgrid


Guest Carlosjunior
 Share

Question

2 answers to this question

Recommended Posts

  • 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

[email protected]

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.

Edited by Micheus
Adicionado o delimitador de código [code] [/code]. Lembre-se de utilizá-lo para melhor visualização
Link to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Forum Statistics

    • Total Topics
      149.8k
    • Total Posts
      646.6k
×
×
  • Create New...