Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-07-2012
hondaalberto hondaalberto is offline
Miembro
 
Registrado: sep 2010
Ubicación: República Dominicana
Posts: 67
Poder: 14
hondaalberto Va por buen camino
Pasar de una Fila a Otra en Un DBGrid al Pulsar Enter

Buenos dias amigos

Tengo un DBGRID que utilizo para cargar insertar los Productos de Una factura de Ventas y necesito que luego de insertar una Nueva linea al pusar enter pase a la Siguiente Fila.

Al igual que si estoy navegando los Registros al pulsar enter vaya pasando de una colmna a otra en la misma fila y al llegar a la ultima Columna pasa a la siguiente Fila.

Tengo las Siguientes Columnas:
0: Fecha
1: Producto No.
2: Descripción
3: Cantidad
4: Precio
5: Descuento
6: Iva

Muchas Gracias por anticipado por la ayuda que puedan brindarme y por su valioso tiempo invertido.
Responder Con Cita
  #2  
Antiguo 02-07-2012
hondaalberto hondaalberto is offline
Miembro
 
Registrado: sep 2010
Ubicación: República Dominicana
Posts: 67
Poder: 14
hondaalberto Va por buen camino
Navegando por la Web me he encontrado el Siguiente procedimiento el cual me funciona para cuando preciono enter el foco va pasando de un columna a otra hasta llegar al final de la línea.

Pero aún me falta que al llegar a la última columna pase a la próxima filla con el foco en la primera columna no que vuelva a la primera columna de la misma fila en la que estoy actualmente navegando.

Aqui les dejo el procedimiento:

Código Delphi [-]
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char); 
{ Manejador del evento OnKeyPress del Form } 
{ También hay que establecer la propiedad KeyPreview del Form a True } 
begin 
  if Key = #13 then                        { si es la tecla  } 
    if not (ActiveControl is TDBGrid) then { si no es un TDBGrid } 
    begin 
      Key := #0;                           { nos comemos la tecla } 
      Perform(WM_NEXTDLGCTL, 0, 0);        { vamos al siguiente control } 
    end 
    else 
      if (ActiveControl is TDBGrid) then   { si es un TDBGrid } 
        with TDBGrid(ActiveControl) do 
          if selectedindex < (fieldcount -1) then 
            selectedindex := selectedindex +1 
          else 
            selectedindex := 0; 
end;
Fuente de los Datos: http://www.terra.es/personal/alksoft...cos/trucos.htm
Responder Con Cita
  #3  
Antiguo 02-07-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.038
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Sí, en principio ese código te viene bien para lo que quieres hacer.
Responder Con Cita
  #4  
Antiguo 02-07-2012
hondaalberto hondaalberto is offline
Miembro
 
Registrado: sep 2010
Ubicación: República Dominicana
Posts: 67
Poder: 14
hondaalberto Va por buen camino
Gracias por tu respuesta Casimiro
Este codigo me funciona bien para moverme de una columna a otra cuando preciono enter, pero me falta por hacer que al llegar a la última columna pase a la siguiente fila como cuando presionamos cursor Down que baja a la siguiente línea.

Saludos y gracias por anticipado
Responder Con Cita
  #5  
Antiguo 02-07-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.038
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Bueno, básicamente tienes que controlar que estás en el último campo y entonces bajar al siguiente registro y posicionarte en el primer campo.
Tendrás que controlar que exista el registro siguiente para crear uno nuevo o simplemente editar el que existe.
Esto de hacer una BUENA edición en un dbgrid es realmente muy complejo si se quiere hacer bien, surjen multitud de imprevistos, ya lo verás, lo sufrirás bastante.

Me parece recordar que el compañero José Luis Garcí puso un código para controlar este tipo de cosas, que lo mismo te puede servir, adaptándolo.
Responder Con Cita
  #6  
Antiguo 02-07-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por hondaalberto Ver Mensaje
Gracias por tu respuesta Casimiro
Este codigo me funciona bien para moverme de una columna a otra cuando preciono enter, pero me falta por hacer que al llegar a la última columna pase a la siguiente fila como cuando presionamos cursor Down que baja a la siguiente línea.

Saludos y gracias por anticipado
Hola.

Proba de esta forma:
Código Delphi [-]
procedure TForm1.DBGridKeyPress(Sender: TObject; var Key: Char);
begin
  if Key = #13 then
    with TDBGrid(Sender) do
      if SelectedIndex < FieldCount-1 then
        SelectedIndex:= SelectedIndex + 1
      else
      begin
        DataSource.DataSet.Next;
        SelectedIndex:= 0;
      end;
end;

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Al pulsar Enter en un boton funciona como Tabulador weke OOP 8 12-09-2011 19:04:01
Quitar sonido de error al pulsar Enter madiazg Varios 2 25-08-2008 21:33:38
Otra vez color de fila de un DBGRID? pepe2000 OOP 7 17-01-2006 02:55:08
Pitido al pulsar Enter JavierB Varios 2 06-04-2005 13:34:44


La franja horaria es GMT +2. Ahora son las 21:56:45.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi