Ir para conteúdo
Fórum Script Brasil
  • 0

StringGrid


Manoel Zancheta

Pergunta

6 respostass a esta questão

Posts Recomendados

  • 0
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 1

StringGrid1.Cells[1,1];

Coluna 10, linha 5

StringGrid1.Cells[10,5];

[]'s

Link para o comentário
Compartilhar em outros sites

  • 0

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.

Link para o comentário
Compartilhar em outros sites

  • 0
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

Link para o comentário
Compartilhar em outros sites

  • 0

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 por Manoel Zancheta
Link para o comentário
Compartilhar em outros sites

  • 0
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é?

hehehe

Qualquer dúvida, posta aí.

[]'s

Link para o comentário
Compartilhar em outros sites

  • 0

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 por Manoel Zancheta
Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...