Conteudo da celula do DbGrid
E ai galera
alguem saberia me informar se uma maneira de pegar o conteudo da celula do dbgrid antes mesmo que seja salvado no BD
ou seja eu digito o valor ( texto ) e logo em seguida clico em buttaoe deve aparecer uma mensagem com conteudo que digitei na celuna do dbgrid
Essa maneira naum da certo tabelacampo.asString porque esta informação ainda naum esta salvo no BD como comentei acima
desde ja agradeço
alguem saberia me informar se uma maneira de pegar o conteudo da celula do dbgrid antes mesmo que seja salvado no BD
ou seja eu digito o valor ( texto ) e logo em seguida clico em buttaoe deve aparecer uma mensagem com conteudo que digitei na celuna do dbgrid
Essa maneira naum da certo tabelacampo.asString porque esta informação ainda naum esta salvo no BD como comentei acima
desde ja agradeço
Biodelphi
Curtidas 0
Respostas
Marco Salles
26/07/2006
Essa maneira naum da certo tabelacampo.asString porque esta informação ainda naum esta salvo no BD como comentei acima
Estou meio surpreso , visto que ao perder o foco da coluna da grid o evento Onchange do Tfield é disparado.....
mesmo que o valor ainda não esteja gravado no base de dados o valor do tabelacampo.asString sera o valor digitado na celula da grid
Veja , voce so não tem este valor em alguns eventos que antecedem o evento onChange do Tfield , com por exemplo o evento OnKeyPress da celula do DbGrid
Tanto é verdade que se voce ter um campo Data e na celula do grid correspondende voce digitar un valor inválido , ao tentar sair da celula o delphi te notifica
:cry: :cry: :cry: Eu não entendi direito sua duvida.
GOSTEI 0
Biodelphi
26/07/2006
Digamos assim então, teria como eu pegar o conteudo da celula antes mesmo de passar pelo evento Onchange do Tfield
GOSTEI 0
Marco Salles
26/07/2006
Digamos assim então, teria como eu pegar o conteudo da celula antes mesmo de passar pelo evento Onchange do Tfield
jeito tem , mas poderia ser mais insisivo no seu problema. Para quem sabe acharmos uma solução
Veja , que tanto nos , como o própio delphi ficamos a priori sem saber como definir o que é o conteudo da celula do dbgrid sem que a gente faça menção de sair desta celula...
[b:fb0c553e0d]O Conteudo de uma celula de um campo integer sera o primeiro numero que voce digitou na célula Exe : 1 ???? Ou sera os dois primeiros numeros exe : 11 ??? ou sera os tres primeiros numeros Ex:111, etc.. e assim vai[/b:fb0c553e0d]
GOSTEI 0
Biodelphi
26/07/2006
Tao ta, vou explicar o caso
tenho um cadastro de produto
e um cadastro de pedido
quando digito os itens do pedido começo digitado o codigo do produto
entao antes mesmo de sair da celula ja com o codigo do produto digitado o usuario acessar uma opção por um popup que abre o cadastro de produtos ja aparecendo os dados do produto que ele digitou no pedido
So que isso tem que ser feito antes da opção do validade. ( esse que é o meu problema ) o cliente quer que seja assim
podia fazer isso td no validade mais não posso :?
tenho um cadastro de produto
e um cadastro de pedido
quando digito os itens do pedido começo digitado o codigo do produto
entao antes mesmo de sair da celula ja com o codigo do produto digitado o usuario acessar uma opção por um popup que abre o cadastro de produtos ja aparecendo os dados do produto que ele digitou no pedido
So que isso tem que ser feito antes da opção do validade. ( esse que é o meu problema ) o cliente quer que seja assim
podia fazer isso td no validade mais não posso :?
GOSTEI 0
Marco Salles
26/07/2006
podia fazer isso td no validade mais não posso
onvalidade ocorre depois que o onchange , acho que nesse caso seria melhor antes...
entao antes mesmo de sair da celula ja com o codigo do produto digitado o usuario acessar uma opção por um popup que abre o cadastro de produtos ja aparecendo os dados do produto que ele digitou no pedido
geralmente a gente usa um campoLook Para isto
mas me responda o seguinte:
[b:74832ed124]o usuario acessar uma opção por um popup que abre o cadastro de produtos[/b:74832ed124]
nesse momento , é so fazer com que a celula perca o foco ... Não teria como fazer isto ???? Porque eu to perguntando isto ??? Porque tem situçoes que mesmo acionando componentes o foco continua com o antigo e eu não sei como é criado este Popup
[b:74832ed124]Então devemos forçar a perca do foco e depois retornar o foco para a coluna da grid[/b:74832ed124]
[b:74832ed124]com isto voce ja tem o Tão esperado tabelacampo.asString [/b:74832ed124]
Entendeu esta idéia ??? :?: :?: :?:
GOSTEI 0
Biodelphi
26/07/2006
a ideia é boa
ja tinha pensado nisso
mais nao posso porque eu uso o evento validade para fazer umas coisinhas e fazendo essa jogada ele vai disparar o validade sozinho
por isso naum pode preciso pegar o conteudo da celula antes
não ta facil :!:
ja tinha pensado nisso
mais nao posso porque eu uso o evento validade para fazer umas coisinhas e fazendo essa jogada ele vai disparar o validade sozinho
por isso naum pode preciso pegar o conteudo da celula antes
não ta facil :!:
GOSTEI 0
Marco Salles
26/07/2006
não ta facil
Outra idéia então...
eu não sei com voce esta criando este popup , mas o codigo abaixo deve funcionar se ele for criado no estilo ´SowModal´
A idéia é programar o evento OnsetText do Tfield Codigo
procedure TForm1.NomeDoSeuDataSetCampoSetText(Sender: TField; const Text: String); begin //desconnecta o manipulador de evento Onsettext do seu Campo NomeDoSeuDataSetCampo.OnSetText:=nil; //uma variavel Global capta o Valor da celula da Grade valorDaCelula:=text; //Abre o Popup em Estilo ShoModal Form2.ShowModal; //Grava o Valor da celula na Base De Dados sender.text:=Text; //reconecta o Manipulador de eventos NomeDoSeuDataSetCampo.OnSetText:=NomeDoSeuDataSetCampoSetText; end;
Note que o evento OnValidadeDoCampo
procedure TForm1.NomeDoSeuDataSetCampoValidate(Sender: TField); begin showmessage(´é executado depois do OnSetText do Campo´); end;
so para finalizar duas coisas:
a)eu não sei porque disse que o evento onchange ocorre antes que o evento OnValidade. De Fato ocorre depois
b)O Código acima para funcionar requer que o Popup seje abreto em estilo ShowModal , eu não sei se é este o seu caso.
Boa sorte e nos comunique
GOSTEI 0
Biodelphi
26/07/2006
Blz.. essa dica pode mesmo me ajudar mas da mesmo forma tenho que forçar a saida da celula falew
Sobre o onChange nem eu naum sei porque falei isso de ocorrer antes
E quando me referia a popup tava querendo dizer que era o componente TPopup
resumindo em outras palavras minha logica
era pra ser +/- assim
digita o conteudo no grid(celula)
antes mesmo de dar (enter sair da celula ) com o botao direito abro um MENU POPUP que tem uma opcao digamos com o nome de ver valor
quando clico aparece uma msg com o texto digitado at o momento na celula ativa do grid
Faleu pela força :D
Sobre o onChange nem eu naum sei porque falei isso de ocorrer antes
E quando me referia a popup tava querendo dizer que era o componente TPopup
resumindo em outras palavras minha logica
era pra ser +/- assim
digita o conteudo no grid(celula)
antes mesmo de dar (enter sair da celula ) com o botao direito abro um MENU POPUP que tem uma opcao digamos com o nome de ver valor
quando clico aparece uma msg com o texto digitado at o momento na celula ativa do grid
Faleu pela força :D
GOSTEI 0
Marco Salles
26/07/2006
essa dica pode mesmo me ajudar mas da mesmo forma tenho que forçar a saida da celula falew
desconheço , com pegar o conteudo do dbgrid sem que se ´saia´ da celula , pela simples razão que expos anteriormente.
O Conteudo de uma celula de um campo integer sera o primeiro numero que voce digitou na célula Exe : 1 ???? Ou sera os dois primeiros numeros exe : 11 ??? ou sera os tres primeiros numeros Ex:111, etc.. e assim vai
Qualquer dificuldade volte a postar , ´pois ja estamos quase lá´
GOSTEI 0