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

(Resolvido) Linha selecionada num dbgrid


Alessandra (Jundiai)

Pergunta

Pessoal, eu estou com um problema.

 

Na minha tela de cadastro, eu coloquei um botão onde executa uma rotina de cálculos. Mas, essa rotina só poderá ser executada, se o usuario tiver clicado em algum item no dbgrid.

Então tentei usar o selectecrows.count, mas o usuario não quer dar duplo clique para selecionar a linha.

Alguém sabe me informar, como saber se o usuario apenas clicou em uma linha desse grid ????????

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0
Alguém sabe me informar, como saber se o usuario apenas clicou em uma linha desse grid ????????

Neste exemplo quando voce clica em uma linha de uma coluna, ele testa para saber se é a coluna escolhida

procedure TFMovCaixa.DBGrid1CellClick(Column: TColumn);
begin

   if DBGrid1.SelectedField.FieldName='TIPO' then
      begin
         .... comandos
      end;

   if DBGrid1.SelectedField.FieldName='CALC' then
      begin
         .... comandos
      end;

end;
É fácil saber a coluna que você está no DBGrid. Para isso vamos usar a propriedade SelectedIndex que retorna o número da coluna. Veja um exemplo:
procedure Tform1.DBGrid1ColEnter(Sender:TObject);
begin
   Edit1.Text := IntToStr(DBGrid1.SelectedIndex);
end;
Meu programa precisa processar algo quando o usuário clicar no DBGrid em um determinado form. O problema é que o DBGrid não possui o evento OnClick. É possível adicionar este evento no DBGrid? Solução: É possível sim. Afinal é muito simples. Siga os passos abaixo para resolver seu problema: - Monte seu form normalmente, colocando o DBGrid e demais componentes; - Vá na seção "private" da unit e declare a procedure abaixo:
private
  procedure DBGridClick(Sender: TObject);
- Logo após a palavra "implementation", escreva a procedure:

implementation
{$R *.DFM}

procedure TForm1.DBGridClick(Sender: TObject);
begin
  ShowMessage('Clicou no DBGrid.');
end;
- Coloque as instruções abaixo no evento OnCreate do Form:

procedure TForm1.FormCreate(Sender: TObject);
begin
  DBGrid1.ControlStyle :=  DBGrid1.ControlStyle + [csClickEvents];
  TForm(DBGrid1).OnClick := DBGridClick;
end;

- E pronto. Execute e teste.

Observações

O segredo principal desta dica está OnCreate do Form. A primeira instrução ativa o evento OnClick. A segunda instrução acessa o manipulador do evento OnClick. Para isto precisamos tratar o DBGrid como se fosse Form, pois o evento OnClick está declarado como protegido (protected) na classe TDBGrid.

abraço

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,3k
    • Posts
      652,4k
×
×
  • Criar Novo...