Botão Dentro do DBGrid para consulta de Produtos

Delphi

01/11/2012

Galera eu estou tentando colocar um botão dentro da celular do meu dbgrid de itens, ou seja,ao clicar na célula onde eu tenho o código do produto eu quero acrescentar um botão no canto direito para o usuário clicar e consultar o produto caso ele não saiba o código do produto que esta inserindo no momento.

imagem de exemplo:
[url]http://www.7master.com.br/grid.gif[/url]
Sidney Abreu

Sidney Abreu

Curtidas 0

Respostas

Gilvanio Gonçalves

Gilvanio Gonçalves

01/11/2012

na verdade o mais correto não seria botão na grid, mas sim clique do mouse
do lado direto na celula e abre um caixa para pesquisa ao campo selecionado,porém neste metodo
tem que usar componente, e sql.
mas vamos lá no que vc quer:

lembrado que cada botão, e o caption criado é apenas uma imagem .

codigo no evento onDrawColumnCell:

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
  BUTTON: Integer;
  R: TRect;
  SCapt : string;

begin

if Column.FieldName = 'Codigo' then
  begin
    DBGrid1.Canvas.FillRect(Rect);
    BUTTON := 0;
    R:=Rect;
    SCapt := '...';// caption do botão
    InflateRect(R,-24,-2); //Diminue o tamanho do Botão
    DrawFrameControl(DBGrid1.Canvas.Handle,R,BUTTON, BUTTON or BUTTON);
    with DBGrid1.Canvas do
    begin
      Brush.Style := bsClear;
      Font.Color := clBtnText;// cor normal do botão
      TextRect(Rect, (Rect.Left + Rect.Right - TextWidth(SCapt)) div 2, (Rect.Top + Rect.Bottom - TextHeight(SCapt)) div 2, SCapt);//posicionamentodo botão
    end; 
  end;


end;



como o botão é só uma imagem vc terá que criar um rotina com codigo para
para relizar a pesquisa na coluna selecinada, vou usra um exemplo por um form

procedure TForm1.DBGrid1CellClick(Column: TColumn); 
begin 
 if DBGrid1.SelectedField.FieldName = 'Codigo' then 
  begin 
   form2.show; 
   form2.Edit1.text:=vdadosdbgrid;//Variavel global mandando os dados para o form2 
  end; 
end;


observe que na ultima linha do codigo é chamado uma varivem global para enviar o valor do campo para o form2, em um edit.
esta variavel vc que vai criar ok.


agora é só vc adaptar ao seu aplicativo.

At+
GOSTEI 0
POSTAR