Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-09-2003
Newbie Newbie is offline
Miembro
 
Registrado: Jul 2003
Ubicación: Veracruz, México
Posts: 30
Poder: 0
Newbie Va por buen camino
Desplazamiento por un DBGrid

Qué tal, cómo les va!!!

Antes que nada, espero estar en el foro correcto, ya que no supe en donde más poner esta pregunta, pues no es ni de sql ni está relacionada 100% con conexión a datos.

Pues bien, de lo que se trata es de lo siguiente:

1.- En primera, cómo hacer para que, estando en un DBGrid y presionar la tecla "enter" en determinado campo, tome enseguida el valor que acaba de introducir el usuario para ejecutar cierto código. Me explico mejor: Por ejemplo, si estamos en el primer campo del dbgrid, en donde el usuario tiene que introducir el código del producto y oprimir enter(vk_return) para que el sistema busque los datos correspondientes a ese producto(como el precio y la existencia actual) y los introduzca en los demás campos de la tabla a la que está asociado el dbgrid. Lo que pasa actualmente es que si el usuario oprime enter, me toma el valor anterior del campo, es decir, si estamos introduciendo un producto nuevo, me toma 0(cero) y si estamos editando un campo, digamos para cambiar de producto, me toma el valor del producto anterior; y no es hasta el segundo enter que se toma el valor actual. Esto lo solucioné incrementando y disminuyendo el valor de dbgrid.selectedindex al presionar enter, con lo que funciona perfectamente, pero me gustaría saber si conocen otra forma de lograr esto sin tener que incrementar y disminuir ese valor.

2.- En el mismo caso del dbgrid, quisiera saber cómo se puede hacer para que, si estamos en la última celda de la última columna del grid y el usuario persiona enter, automáticamente se añada otra fila para que el usuario pueda introducir otro producto. Además, si está en la última celda, pero no en el último registro, se pase al siguiente registro de la tabla. El problema actualmente es que no sé como saber si nos encontramos posicionados en el último registro de la tabla. Resumiendo el asunto, lo que quiero es que, al presionar enter y estar en la última fila de la tabla, simplemente se añada otro registro.

Espero que alguien pueda echarme una mano con esto

hasta pronto
Responder Con Cita
  #2  
Antiguo 24-09-2003
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: May 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Mira este ejemplo:
GrLineeas es el nombre que se le ha dado a la rejilla.

Código:
ocedure TfrFacturas.GrLineasKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin

if Key = vk_Return then
  begin
    if GrLineas.SelectedIndex < Pred( GrLineas.FieldCount -1 ) then
        begin
        GrLineas.SelectedIndex := GrLineas.SelectedIndex + 1;
        end
        else
        begin
        GrLineas.SelectedIndex := 0;
        //Flecha abajo es decir nuevo registro.
        GrLineas.Perform( wm_KeyDown, vk_Down, 0 );
        end;
    end;
end;
La primera pregunta no la veo, clara pero sino interpreto mal, no tiene nada que ver con la rejilla sino con el evento OnChange u OnValidate del Campo.


Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 25-09-2003
cadetill cadetill is offline
Miembro
 
Registrado: May 2003
Posts: 3.387
Poder: 19
cadetill Va por buen camino
en la 1era pregunta, supongo que los demás campos serán calculados, no?

si es así, intenta que tus clientes se acostumbren al comportamiento estándar de Windows (tendrás menos dolores de cabeza) ya que, la tecla TAB hace lo que quieres para la 1era y 2unda pregunta

Si no fueran calculados, puedes informar el evento OnValidate del TField correspondiente (o sea, del campo)

Espero te sirva
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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


La franja horaria es GMT +2. Ahora son las 17:20:03.


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