Fórum Clicar 2 vezes em uma celula do Grib e exibir outro form #373617

14/08/2009

0

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

Responder

Posts

15/08/2009

Rweberich

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.


Responder

Gostei + 0

17/08/2009

Thiagoangra2

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


Responder

Gostei + 0

17/08/2009

Thiagoangra2

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!


Responder

Gostei + 0

17/08/2009

Alanporto

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; 



Responder

Gostei + 0

17/08/2009

Alanporto

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; 



Responder

Gostei + 0

18/08/2009

Rweberich

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.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar