Array
(
)

enter no dbgrid

Arc
   - 16 jan 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....


Nilpedro
   - 16 jan 2006

Resposta a essa pergunta ja tá neste forum

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


Arc
   - 16 jan 2006

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


Arc
   - 16 jan 2006

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


Aasn
   - 16 jan 2006

Caro arc,

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

#Código


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


Arc
   - 16 jan 2006

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


Aasn
   - 16 jan 2006

Caro arc,

#Código


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


Arc
   - 17 jan 2006

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