Auto tab para o próximo campo em uma DBGRID

Delphi

03/07/2015

Eu estou tentando fazer com que apos digitas as horas e minutos (08:15) na coluna da DBGrid ele va para a proxima coluna,
tipo um maxlength.

Esta DBGrid esta vinculada a um TFDTable

achei esta Procedure, mais não sei como utilizar:

 
procedure TDBGridInplaceEdit.KeyUp(var Key: Word; Shift: TShiftState);

var 
  ALimit: integer; 
begin 
  with TCustomDBGrid(Grid) do begin 
    ALimit:=GetEditLimit; 
    if (ALimit > 0) and (Length(Self.Text) >= ALimit) then 
      MoveCol(DataToRawColumn(Col), 0); 
  end; 
  inherited KeyUp(Key, Shift); 
end; 

alguém sabe como fazer ou pode me ajudar com essa situação, tem esse codigo tambem, mais sem sucesso:

procedure TForm1.grdMyGridKeyUp(Sender: TObject; var Key: Word;
 Shift: TShiftState);
begin
 with grdMyGrid do 
  if (Key=VK_TAB) and (SelectedIndex=3) and (Fields[2].AsString='D') then
   SelectedIndex := 6;
end;
Tiago Frutuoso

Tiago Frutuoso

Curtidas 0

Respostas

Raimundo Pereira

Raimundo Pereira

03/07/2015

Tiago

Tenho um sistema de Controle de Ponto e uso o exemplo abaixo:



if (Key=13)OR (KEY=VK_TAB) THEN //VERIFICA SE A TECLA PRESSIONADA FOI ENTER OU TAB
BEGIN
if NOT (GRID.SelectedIndex=Grid.Columns.Count-1) then //VERIFICA SE A COLUNA SELECIONADA NÃO É A ULTIMA
BEGIN
GRID.SelectedIndex:=GRID.SelectedIndex+1; //VAI PARA A PROXIMA COLUNA EXISTENTE
END
ELSE
BEGIN
QRY.POST; // SALVA DADOS INSERIDOS NA TABELA.

END;
END;


Espero que ajude.
GOSTEI 0
Tiago Frutuoso

Tiago Frutuoso

03/07/2015

Dai P2, beleza?

Esse procedimento eu ate ja fiz funcionar, se o cliente der o Enter ou o Tab, vai para a proxima coluna. O que eu queria fazer, era facilitar mais ainda ainda, exemplo:

Campor de digitação
| E-1 | S-2 | E-2 | S-2 |
| 08:00 | 12:00 | 13:00 | 18:00 |

o DBGrid esta com o EditMask, funcionado certinho __:__, neste caso, existe 5 caracteres, mais será digitado somente 4, apos essa digitação ir para a próxima coluna, exemplo

na E-1 digito 08:30, apos o ultimo zero, ir para a coluna S-1 e assim por diante.

Não achei nada desse tipo na DBGrid, será que tenho que criar essa tabela com outro tipo de Grid?
GOSTEI 0
POSTAR