dbGrid/Enter
Meus clientes vem da cultura Dos, estão acostumados a utilizar a tecla enter, nos campos normais isto já está fazendo, a minha dificuldade está na grid:
Tenho uma Grid que contem 3 campos(parcela, data do vencimento e valor), no momento que o usuário acionar a tecla enter no campo valor
quero que o cursor avance automaticamente para a próxima linha e na primeira coluna(numero da parcela)
Obs. Avancar para opróximo campo isto já faz, a dificuldade é avançar
para a próxima linha.
Ontem obtive algumas orientações, mas não funcionou.
Tenho uma Grid que contem 3 campos(parcela, data do vencimento e valor), no momento que o usuário acionar a tecla enter no campo valor
quero que o cursor avance automaticamente para a próxima linha e na primeira coluna(numero da parcela)
Obs. Avancar para opróximo campo isto já faz, a dificuldade é avançar
para a próxima linha.
Ontem obtive algumas orientações, mas não funcionou.
Placido
Curtidas 0
Melhor post
Cbier
06/05/2004
Colega,
Tenho um sistema que possui vários DBGrids e utilizo tanto tab como enter para pular de campo e inserir nova linha.
Tente assim no OnKeyDown do DBGrid:
procedure TfmPedidos.DBGrid4KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
case Key of
13 : Key := 9;
end;
end;
Deverá observar tbém a configuração da propriedade options do seu DBGrid.
Espero ter ajudado
CBier
Tenho um sistema que possui vários DBGrids e utilizo tanto tab como enter para pular de campo e inserir nova linha.
Tente assim no OnKeyDown do DBGrid:
procedure TfmPedidos.DBGrid4KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
case Key of
13 : Key := 9;
end;
end;
Deverá observar tbém a configuração da propriedade options do seu DBGrid.
Espero ter ajudado
CBier
GOSTEI 1
Mais Respostas
Eniorm
06/05/2004
Especificamente como fazer isso eu não sei, mas obtive esse mesmo resultado implementando um procedimento pra mudar de edit ao pressionar enter:
no form principal do seu aplicativo declare StrCtrls
e implemente isso:
Agora no OnCreate do form principal:
Isso faz com que mude de campo ao pressionar enter,
inclusive no dbgri
no form principal do seu aplicativo declare StrCtrls
e implemente isso:
procedure TFormPrincipal.ProcessaMsg(var Msg: TMsg; var Handler: Boolean); begin if (Msg.message = WM_KEYDOWN) then if not (Screen.ActiveControl is TCustomMemo) and not (Screen.ActiveControl is TButtonControl) then begin if not (Screen.ActiveControl is TCustomControl) then begin if (Msg.wParam = VK_Down) and not(Screen.ActiveControl is TListBox) and not(Screen.ActiveControl is TComboBox) then Msg.wParam:= VK_Tab; if (Msg.wParam = VK_UP) and not(Screen.ActiveControl is TListBox) and not(Screen.ActiveControl is TComboBox) then begin Msg.wParam:= VK_CLEAR; Screen.ActiveForm.Perform(WM_NextDlgCtl,1,0); end; if (Msg.wParam = VK_Escape) and not (Screen.ActiveForm is TSimoformPrincipal) then Screen.ActiveForm.Close; end; if (Msg.wParam = VK_Return) then Msg.wParam:= VK_Tab; end; end;
Agora no OnCreate do form principal:
Application.OnMessage := ProcessaMsg;
Isso faz com que mude de campo ao pressionar enter,
inclusive no dbgri
GOSTEI 0
Marco Salles
06/05/2004
Amigo , voce ja fez esta mesma pergunta antes no topico:
http://www.clubedelphi.com.br/novo/index.html
Neste topico voce obteve algumas dicas de alguns colegas
As dicas não deram efeito :?: :?:
O que há nas dicas que não funcionou :?:
Acho que as Correspostas aquelas dicas são importantes para afinilar e filtrar o problema..e assim chegar a um denominador comum..Eu, por exemplo, olhei rapidamente as dicas e concordei com elas :( ...Meu objetivo não e te corrigir, te informar, nada disto..apenas tentar lhe ajudar..mas parar isto, quanto mais detalhes e informações do que se quer fazer , o que não deu certo, porque não deu, etc... melhor...Beleza
http://www.clubedelphi.com.br/novo/index.html
Neste topico voce obteve algumas dicas de alguns colegas
As dicas não deram efeito :?: :?:
O que há nas dicas que não funcionou :?:
Acho que as Correspostas aquelas dicas são importantes para afinilar e filtrar o problema..e assim chegar a um denominador comum..Eu, por exemplo, olhei rapidamente as dicas e concordei com elas :( ...Meu objetivo não e te corrigir, te informar, nada disto..apenas tentar lhe ajudar..mas parar isto, quanto mais detalhes e informações do que se quer fazer , o que não deu certo, porque não deu, etc... melhor...Beleza
GOSTEI 0
Marco Salles
06/05/2004
Tenho uma Grid que contem 3 campos(parcela, data do vencimento e valor), no momento que o usuário acionar a tecla enter no campo valor
quero que o cursor avance automaticamente para a próxima linha e na primeira coluna(numero da parcela)
Obs. Avancar para opróximo campo isto já faz, a dificuldade é avançar
para a próxima linha.
[b:8440475803]Uma Das dicas que recebeste ontem:[/b:8440475803]begin
if key = #13 then begin.Post; If DbGrid1.DataSource.State <> DsBrowse Then Table1.Append; Table1.Fields[0].FocusControl; end; end;
Desculpe é que eu sou novato, para navegar no forum.....
Não é que as dúvidas não funcionaram..... é que não ficou do jeito que eu
quero, por exemplo nas dicas enviadas[b:8440475803] o cursor abre uma linha na grid,
mas desloca as linhas digitadas para baixo[/b:8440475803], eu não quero isto, eu quero que ao acionar a tecla enter [b:8440475803]no último campo da grid o cursor avance uma linha e fique posicionado no primeiro campo da linha a ser digitqada. [/b:8440475803]Grato pela atenção.....
[b:8440475803]Então não deu exatamente o que voce queria ..Então vamos tentar o código abaixo....[/b:8440475803] :idea: :idea: :idea:
procedure TForm1.DBGrid1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); var i:Integer; begin i:=Table1.RecordCount; if key = VK_Return then begin if DbGrid1.SelectedIndex=4 then begin if DbGrid1.DataSource.State = DsBrowse then //Aqui begin if Table1.RecNo <> i Then begin Table1.Next; Table1.Insert; end else Table1.Append; Table1.Fields[0].FocusControl; end; end else key:=VK_RIGHT; end; end;
[b:8440475803]Note que eu Mudei o Evento...Para DBGrid1KeyDown[/b:8440475803]
P:S Algumas propiedades listadas presupoem que voce esta usando um Table...Tem Banco que não aceita a Porpriedade recno :( :( ...Então o código anterior tem que sofrer algumas alterações :cry: :cry: ....
Se nao funcionar ou não for do seu agrado, poste novamente, Não tem Importancia :P :P
[b:8440475803]Tente isto e nos comunique o mais rapido possivel[/b:8440475803]
GOSTEI 0