Clicar 2 vezes em uma celula do Grib e exibir outro form

Delphi

14/08/2009

bom galera tenho uma duvida! trabalho com delphi e firebird e tenho uma tela de pesquisa de produtos, gostaria de fazer que quando clicasse em numa celula mostraria esse registro em outro formulario.

tenho um formulario de busca de produtos e um outro aonde cadastro os produtos! quando fizesse a pesquisa do produto, por exemplo ´anel´ e clicasse 2 vezes mostrasse o regitro no outro formulario que é de cadastro!

espero que tenham me entendido, desde já agradeço! vlw :wink:


Thiagoangra2

Thiagoangra2

Curtidas 0

Respostas

Rweberich

Rweberich

14/08/2009

Ola amigo,
com certeza voce deve estar listando esses cadastros em um DBGrid,
caso seja essa sua dificuldade, issu é bem facil de resolver:

vai nos eventos do DBGrid, na opcao ´DblClick´ e coloque o seguinte codigo:

if DBGrid1.Fields[0].Text <> ´´ then
begin
DataModule1.tblprodutos.Locate(´CODIGO´,DBGrid1.FieldS[0].Text,[loPartialKey]);
DataModule1.tblprodutos.Edit;
frmCadProdutos.ShowModal; // abre o formulario de cadastro de produtos
end;

Abraco.


GOSTEI 0
Thiagoangra2

Thiagoangra2

14/08/2009

amigo, ta dando um error aki, ve se pode me ajudar! é algo nesse lopartialkey? o que eu to fazendo de errado?

[Error] Ubuscaproduto.pas(94): Undeclared identifier: ´loPartialKey´
[Error] Ubuscaproduto.pas(94): Incompatible types: ´TLocateOption´ and ´Integer´
[Error] Ubuscaproduto.pas(96): Record, object or class type required

desde ja agradeço, abraços


GOSTEI 0
Thiagoangra2

Thiagoangra2

14/08/2009

procedure Tfrmbuscapro.DBGrid1DblClick(Sender: TObject);
begin
if DBGrid1.Fields[0].Text <> ´´ then
begin
dm.cdspro.Locate(´CODIGO´,DBGrid1.FieldS[0].Text,[loPartialKey]);
dm.cdspro.Edit;
frmcadpro.ShowModal.ShowModal;
end;
end;

o codigo é esse!


GOSTEI 0
Alanporto

Alanporto

14/08/2009

o último erro provavelmente é por que você colocou ShowModal.ShowModal

quanto ao loPartialKey, nesse caso ele pode ser dispensado, pois sempre vai existir o código passado. Tenta assim:

procedure Tfrmbuscapro.DBGrid1DblClick(Sender: TObject);
begin
if DBGrid1.Fields[0].AsString <> EmptyStr then
begin
dm.cdspro.Locate(´CODIGO´,DBGrid1.FieldS[0].AsString,[]);
dm.cdspro.Edit;
frmcadpro.ShowModal;
end;
end; 



GOSTEI 0
Alanporto

Alanporto

14/08/2009

o último erro provavelmente é por que você colocou ShowModal.ShowModal

quanto ao loPartialKey, nesse caso ele pode ser dispensado, pois sempre vai existir o código passado. Tenta assim:

procedure Tfrmbuscapro.DBGrid1DblClick(Sender: TObject);
begin
if DBGrid1.Fields[0].AsString <> EmptyStr then
begin
dm.cdspro.Locate(´CODIGO´,DBGrid1.FieldS[0].AsString,[]);
dm.cdspro.Edit;
frmcadpro.ShowModal;
end;
end; 



GOSTEI 0
Rweberich

Rweberich

14/08/2009

Ola Thiago,

procedure Tfrmbuscapro.DBGrid1DblClick(Sender: TObject); begin if DBGrid1.Fields[0].Text <> ´´ then begin dm.cdspro.Locate(´CODIGO´,DBGrid1.FieldS[0].Text,[loPartialKey]); dm.cdspro.Edit; frmcadpro.ShowModal.ShowModal; end; end; o codigo é esse!


É importante que vc informe ´loPartialKey´ ou pode acrescentar ainda ´loCaseInsensitive´, que ficaria assim (,[loPartialKey, loCaseInsensitive]), por que desta forma, vc estara filtrando indiferente se o usuario digite em letras minusculos ou maiusculas.

Desta forma, o codigo correto ficaria assim:

[b:ec78ad3aff]procedure Tfrmbuscapro.DBGrid1DblClick(Sender: TObject);
begin
if DBGrid1.Fields[0].Text <> ´´ then
begin
dm.cdspro.Locate(´CODIGO´,DBGrid1.FieldS[0].Text,[loPartialKey, loCaseInsensitive]);
dm.cdspro.Edit;
frmcadpro.ShowModal;
end;
end;[/b:ec78ad3aff]

Obs: Verifique em ´Uses´, no cabeçalho, se esta declarado ´DB´, ali junto de: ´...Windows, Messages, SysUtils..´. Se nao tiver acrescente ´DB´. Issu deve ajuda-lo.


GOSTEI 0
POSTAR