enter no dbgrid

16/01/2006

montei um grid com uma coluna de valores, quero que o usuario tecle enter e todo o valor do campo fique selecionado como no TAB...
coloquei um codigo onde o enter funciona bem, pulando de linha em linha, mas o cursor fica sempre no final do valor, ..., se eu usar o tab, e as setas de direção, os valores ficam selecionados....
fiz uma pesquisa onde por troca de tab pelo enter, mas por enqto não achei nada que resolva meu problema....


Arc

Respostas

16/01/2006

Nilpedro

Resposta a essa pergunta ja tá neste forum

http://forum.clubedelphi.net/viewtopic.php?t=71066


Responder Citar

16/01/2006

Arc

ok
eu ja tinha visto este topico....
bom, pelo menos aki naum ta funcionando


Responder Citar

16/01/2006

Arc

ele até que funciona, mas é aquele negocio, o cursor continua no final do valor, ..., eu quero que ele selecione o valor todo, como se fosse um selectall


Responder Citar

16/01/2006

Aasn

Caro arc,

Não entendi direito o que vc quer, mas aí vai um trecho de código que pode ajudar:

 with DBGrid1 do
      begin
      if selectedindex < (fieldcount - 1) then
         selectedindex := selectedindex + 1
      else
         selectedindex := 0;
      end;


se vc puder ser mais específico, talvez possa ajudar mais.

[]´s
AASN


Responder Citar

16/01/2006

Arc

Caro AASN

quando eu teclo TAB, o valor da celula, fica todo selecionado, ou seja, se o valor for 125,00, o valor 125,00 fica selecionado(em azul);

se eu teclo as setas Right, Left, Down, Up, o valor fica selecionado, da mesma forma que com a tela TAB

qdo eu teclo ENTER, o cursor vai para o final da celula, no mesmo exemplo, o cursor fica logo após o ultimo zero de 125,00, o que obriga o usuario a usar o mouse para selecionar o valor e edita-lo


espero ter conseguido explicar melhor

abraço


Responder Citar

16/01/2006

Aasn

Caro arc,

procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
if key = #13 then
   begin
   Key := 0;
   with DBGrid1 do
         begin
         if selectedindex = 1 { coluna valor } then
            Key := 13
         else { outra coluna qualquer }
            if selectedindex < (fieldcount - 1) then
               selectedindex := selectedindex + 1
            else
               selectedindex := 0;
         end;
   end;
end;


fiz este pequeno teste e funcionou exatamente como vc quer. Não sei os detalhes do seu projeto mas fiz esta rotina sem me preocupar com os detalhes e funcionu perfeitamente.

[]´s
AASN


Responder Citar

17/01/2006

Arc

colegas
achei o erro aki, puts, nem acredito que era isso
a opção alwaysshoweditor do grid estava como true, coloquei false e funcionou

valeu


Responder Citar