Manoel Zancheta Postado Outubro 21, 2008 Denunciar Share Postado Outubro 21, 2008 Olá.Num StringGrid, se eu digitar um valor numa célula e sair da mesma através de um clique do mouse, como faço para armazenar e recuperar o valor anterior à digitação?Grato! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Rodrigo Flores Postado Outubro 21, 2008 Denunciar Share Postado Outubro 21, 2008 Olá.Num StringGrid, se eu digitar um valor numa célula e sair da mesma através de um clique do mouse, como faço para armazenar e recuperar o valor anterior à digitação?Grato!Tu podes utilizar o evento OnExit do StringGrid.Para pegar o valor da célula tu tens que saber qual célula deseja buscar, por exemplo.Coluna 1, linha 1StringGrid1.Cells[1,1];Coluna 10, linha 5StringGrid1.Cells[10,5];[]'s Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Manoel Zancheta Postado Outubro 21, 2008 Autor Denunciar Share Postado Outubro 21, 2008 Olá.No OnExit não posso usar pois na verdade seria um clique do mouse no próprio Grid, em outra célula. Eu não estou conseguindo identificar em qual evento eu atualizo a linha, coluna e as informações, estava fazendo no OnSelectCell mas não deu certo. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Rodrigo Flores Postado Outubro 21, 2008 Denunciar Share Postado Outubro 21, 2008 Olá.No OnExit não posso usar pois na verdade seria um clique do mouse no próprio Grid, em outra célula. Eu não estou conseguindo identificar em qual evento eu atualizo a linha, coluna e as informações, estava fazendo no OnSelectCell mas não deu certo.Boa tarde, Manoel.Faz no onclick do StringGrid.procedure TForm1.StringGridClick(Sender: TObject); begin ShowMessage(StringGrid.Cells[StringGrid.Col, StringGrid.Row]); // StringGrid.Col - Coluna atual // StringGrid.Row - Linha Atual end;[]'s Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Manoel Zancheta Postado Outubro 21, 2008 Autor Denunciar Share Postado Outubro 21, 2008 (editado) Olá Rodrigo Flores.Em qual evento eu armazeno o valor atual de col e row para duas variáveis para posterior recuperação?Se armazeno no Onselectcell, quando clico com o mouse perco os valores armazenos anteriormente, isto que não estou conseguindo. Identificar em qual célula estou atualmente não é o problema. Não sei se fui claro.Seria hipoteticamente um OnExit da Célula e não do Grid. Grato! Editado Outubro 21, 2008 por Manoel Zancheta Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Rodrigo Flores Postado Outubro 21, 2008 Denunciar Share Postado Outubro 21, 2008 Olá Rodrigo Flores.Em qual evento eu armazeno o valor atual de col e row para duas variáveis para posterior recuperação?Se armazeno no Onselectcell, quando clico com o mouse perco os valores armazenos anteriormente, isto que não estou conseguindo. Identificar em qual célula estou atualmente não é o problema. Não sei se fui claro.Seria hipoteticamente um OnExit da Célula e não do Grid. Grato!Tu podes criar variáveis globais para guardar os valores.Assim tu podes recuperar esse valor a qualquer momento no form.Por exemplo:private { Private declarations } Coluna_Atual, Coluna_Anterior, Linha_Atual, Linha_Anterior : Integer; No On Create do formulário, tu zera as variáveis: procedure TForm1.FormCreate(Sender: TObject); begin Coluna_Atual := 0; Coluna_Anterior := 0; Linha_Atual := 0; Linha_Anterior := 0; end; e no evento onclick, do StringGrid, tu altera as posições: procedure TForm1.StringGridClick(Sender: TObject); begin Coluna_Anterior := Coluna_Atual; Linha_Anterior := Linha_Atual; Coluna_Atual := StringGrid.Col; LinhaAtual := StringGrid.Row; end; Tu podes até colocar um botão no form e testar o retorno dos dados: procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage(StringGrid.Cells[Coluna_Anterior,Linha_Anterior]); end;PS.: Deu pra perceber que eu gosto do ShowMessage, né?heheheQualquer dúvida, posta aí.[]'s Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Manoel Zancheta Postado Outubro 21, 2008 Autor Denunciar Share Postado Outubro 21, 2008 (editado) Olá.Rodrigo Flores, obrigado!!!!Eis o código final, só volta valor anterior se houver clique do mouse:procedure TForm1.StringGrid1Click(Sender: TObject); begin StrConteudoAnterior := StrConteudoAtual; StrConteudoAtual:= StringGrid1.cells[stringgrid1.Col, stringgrid1.Row]; Coluna_Anterior := Coluna_Atual; Linha_Anterior := Linha_Atual; Coluna_Atual := StringGrid1.Col; Linha_Atual := StringGrid1.Row; end; procedure TForm1.FormCreate(Sender: TObject); begin Coluna_Atual := 0; Coluna_Anterior := 0; Linha_Atual := 0; Linha_Anterior := 0; StrConteudoAtual:= ''; StrConteudoAnterior:= ''; end; procedure TForm1.StringGrid1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin stringgrid1.Cells[Coluna_Anterior, Linha_Anterior]:= StrConteudoAnterior; end; Editado Outubro 21, 2008 por Manoel Zancheta Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Manoel Zancheta
Olá.
Num StringGrid, se eu digitar um valor numa célula e sair da mesma através de um clique do mouse, como faço para armazenar e recuperar o valor anterior à digitação?
Grato!
Link para o comentário
Compartilhar em outros sites
6 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.