Botão Dentro do DBGrid para consulta de Produtos
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]
imagem de exemplo:
[url]http://www.7master.com.br/grid.gif[/url]
Sidney Abreu
Curtidas 0
Respostas
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:
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
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+
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