Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

edson_hh

detectar clique do mouse na grid

Recommended Posts

Tenho uma grid.Essa grid possui um evento OnCellClick, q cada vez q eu clico(em uma coluna especifica), eh updatado no banco e o valor muda de sim pra nao ou vivce versa.e um OnDrawColumnCell q coloquei uma figura (um tick) Oq eu preciso eh o seguinte.. vou ter q alterar e colocar pra virar numeros. ou seja...qdo eu clico do lado direito do mouse, vai somando 1.. e qdo clico do lado esquerdo, subtrai 1.mas onde eu faço isso??o certo seria no OnCellClick, verificar qual botao do mouse eu estou apertando.. mas ele noa aceita o (key=VK_LBUTTON) ... entao teria q ser no OnKeyDown. mas como no OnKeyDown eu vo chama um evento de uma coluna da grid???se eu colocar tudo no OnKeyDown noa funcionaa duvida eh a seguinte:Onde eu faço pra uma coluna de uma grid detectar se estou clicando do lado direito ou esquerdo do mouse.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, você pode fazer uma procedure... soma, e uma subtrai...no OnKeyPress.. você verifica se é o Botão Direito ou Esquerdo...e se a Coluna Ativa do Grid é a desejada...e pronto!

Compartilhar este post


Link para o post
Compartilhar em outros sites

por favor.. e como eu faço isso??eu faço assim e nao funciona if (key = VK_RBUTTON) thenele diz q sao tipos incompativeisse eu colocar no onkeydown, ele compila, mas qdo eu clico na grid, nao passa naquele lugar----------agora q to vendo.. ele nao ta conseguindo detectar q eu estou clicando...eu acho q nao eh key=, deve ser alguma outra coisa pra ver se eh o mouse

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente usar a propriedade OnMouseUp, fazendo algo do tipo:

 

procedure TForm1.DBGrid1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);begin//Botão da direitaif Button = mbRight then	showmessage('Click direito')else	//Botão da esquerda	if Button = mbLeft then		showmessage('Click esquerda')	else		//Botão do centro		showmessage('Click centro')end;

No caso ele vai ser executado depois que selecionou uma célula da linha, sendo que pode fazer um função, procedimento, que incrementa ou decrementa como você deseja, não sei exatamente como deseja fazer, mas poderia fazer algo do tipo:

 

procedure TForm1.DBGrid1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);beginif not (Table1.State = dsEdit) then	Table1.Edit;if Button = mbRight then //Botão da direita	Table1CAMPO.Value:=Table1CAMPO.Value + 1else	if Button = mbLeft then //Botão da esquerda		Table1CAMPO.Value:=Table1CAMPO.Value - 1;Table1.Post;end;

Compartilhar este post


Link para o post
Compartilhar em outros sites

procedure TForm1.DBGrid1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);begin if (Button = mbRight) And (DbGrid1.SelectedIndex = 0) then //Botão da direita e primeira coluna Begin //Soma 1 End; if (Button = mbLeft) And (DbGrid1.SelectedIndex = 0) then //Botão da Esquerda e primeira coluna Begin //Subtrai 1 End;end;

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.