Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-04-2011
maiquemasque maiquemasque is offline
Miembro
 
Registrado: nov 2009
Posts: 14
Poder: 0
maiquemasque Va por buen camino
TDBCtrlGrid para un TPV tactil. ¿Como avanzar por paginas?

Hola de nuevo;

Estoy haciendo un TPV tactil y utilzo un TDBCtrlGrid. Todo va perfecto, he colocado un DBImage y un DBText, todo funciona a la perfección. Pero...resulta que no quiero mostrar las barras de scroll, y de hecho no lo hago. Y para navegar por los productos, pues he colocado un par de botones bien tochos jeje. Y ahí está el problema, no se como hacer para avanzar y retroceder una pagina completa, no un registro.

Por si no me explico bien, sería algo asi:

Se muestran 6 registros por ejemplo, entonces ....
------------------------------------------
| || || |
| 1 || 2 || 3 |
| || || |
------------------------------------------
------------------------------------------
| || || |
| 4 || 5 || 6 |
| || || |
------------------------------------------
------------------- -------------------
| < | | > |
------------------- --------------------
al hacer clic en siguiente, que muestre los siguientes 6 y etc y con el botón atrás lo contrario...

------------------------------------------
| || || |
| 7 || 8 || 9 |
| || || |
------------------------------------------
------------------------------------------
| || || |
| 10 || 11 || 12 |
| || || |
------------------------------------------

Le he dado mil vueltas, he buscado mucho. Yo pensaba situarme en el ultimo registro que se muestra (no el ultimo del dataset), pero no se como hacerlo. A partir de ahí avanzaría tantos registros como se muestran.

¿Alguien tiene alguna idea?, gracias
Responder Con Cita
  #2  
Antiguo 07-04-2011
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
Hola maiquemasque.

Creo que podrías valerte de la función MoveBy del DataSet para lograrlo.
Cita:
function MoveBy(Distance: Integer): Integer;
Ejemplo
Código Delphi [-]
   DataSet.MoveBy(6);  // 6 registros hacia adelante
   DataSet.MoveBy(-6); // 6 registros hacia atrás

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 07-04-2011 a las 13:40:07.
Responder Con Cita
  #3  
Antiguo 07-04-2011
maiquemasque maiquemasque is offline
Miembro
 
Registrado: nov 2009
Posts: 14
Poder: 0
maiquemasque Va por buen camino
Gracias ecfisa, pero te cuento:

Imagina que el DBCtrlGrid tiene 7 filas. Si estoy situado en la última, la 7, ese codigo va bien. Pero si estoy en cualquier otra no funciona a la primera ejecución.

1-2-3-4-5-6-7 (estoy en el 3)

si avanzo con MoveBy el numero de filas tengo (7) entonces me muestra esto:

5 - 6 - 7 - 8 - 9 - 10 (se me posiciona en 10, y a partir de ahi como se posiciona en el último, va bien).

Pero esa primera vez, como verás muestra el 5, 6 y 7 que ya se mostraban antes.

y si estas en el 1, pues solo te muestra como nuevo, el 8 (del 2 al 8).

Y yo lo que necesito, lo ideal es que este donde esté posicionado, muestre los siguientes 7. Para ello el MoveBy serviría si supiera como colocarme antes en la ultima fila.

Sigo en ello, pero no doy con la solución, gracias de nuevo
Responder Con Cita
  #4  
Antiguo 07-04-2011
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
Hola de nuevo.

El ejemplo del mensaje anterior, fué como para orientarte de que herramienta podías valerte...

Supongamos que hay 10 registros :A,B,C,D,E,F,G,H,I,J.
Y que muestres de a 4 en el DBCtrlGrid.
La primera vista sería: A,B,C,D, luego de hacer scroll hacia adelante debería verse: E,F,G,H.
Para que el registro E quede en la parte superior, deberías avanzar 4*2 posiciones y retroceder 4...

Algo como: (es otro ejemplo... )
Código Delphi [-]
procedure TForm1.Avanzar(Sender: TObject);
begin
  DataSet.MoveBy(DBCtrlGrid1.RowCount*2);
  DataSet.MoveBy(-DBCtrlGrid1.RowCount);
end;
También tomá en cuenta, que al hacer scroll, puede que no haya 4 registros para mostrar por que se alcanzo el fin o el inicio de la tabla. (ya sea vayas en un sentido u otro).
Para contemplar esa situación, te doy como dato de ayuda que la función MoveBy devuelve cuantos registros pudo moverse.


Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 07-04-2011 a las 15:58:06.
Responder Con Cita
  #5  
Antiguo 07-04-2011
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Arrow

Disculpenme pero no acabo de ver la complicacion:
Código Delphi [-]
DBCtrlGrid1.DataSource.DataSet.First;//voy al primer registro
DBCtrlGrid1.DataSource.DataSet.Prior;// voy al anterior registro de donde estoy actualemnte
DBCtrlGrid1.DataSource.DataSet.Next;// voy al siguiente registro de donde estoy actualmente
DBCtrlGrid1.DataSource.DataSet.Last;//voy al último registro
, o será que no entiendo bien el problema...
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Responder Con Cita
  #6  
Antiguo 07-04-2011
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
Hola rgstuamigo.

Según entiendo, maiquemasque quiere que el DBCtrlGrid realize un scroll en un sentido u otro al ser presionados los respectivos Buttons al efecto, y no usar las ScrollBars.

Usando las pocas neuronas activas que tengo en este momento, me acordé que existe el procedimiento ScrollBy que quizá se podría usar en este caso. Pero no sé si no será más complejo de ese modo.


Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 07-04-2011 a las 16:40:55.
Responder Con Cita
  #7  
Antiguo 07-04-2011
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola maiquemasque, puedes utilizar las propiedades PanelCount y PanelIndex de tu DBCtrlGrid:

Código Delphi [-]
 
 Total := DBCtrlGrid1.PanelCount;
 NumReg := Total-DBCtrlGrid1.PanelIndex-1;
 DataSet.MoveBy(Total+NumReg);

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.

Última edición por Caro fecha: 07-04-2011 a las 16:44:19.
Responder Con Cita
  #8  
Antiguo 07-04-2011
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:
Hola maiquemasque, puedes utilizar las propiedades PanelCount y PanelIndex de tu DBCtrlGrid:
Y colorín colorado, con el código de Caro... este cuento ha terminado.

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 07-04-2011 a las 16:59:10.
Responder Con Cita
  #9  
Antiguo 07-04-2011
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Arrow

Tenía que ser una mujer la que nos dé una solucion... ..
¡ mujeres al poder......!
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Responder Con Cita
  #10  
Antiguo 07-04-2011
maiquemasque maiquemasque is offline
Miembro
 
Registrado: nov 2009
Posts: 14
Poder: 0
maiquemasque Va por buen camino
¡Muchísimas gracias! Gracias a todos por la ayuda

El código de Caro funciona de cine, es justo lo que necesitaba, thanks! Que bien, con la de vueltas que le he dado.

rgstuamigo, lo que tu dijiste es otra cosa, eso es para moverse de registro en registro y para ir al primero y último.

ecfisa, de todas formas probé tu código también, y no sirve, sorry. Incluso deja un ultimo registro sin verse.

Lo dicho, gracias a todos por vuestro tiempo, mañana viernes....¡buen finde a todos!
Responder Con Cita
  #11  
Antiguo 07-04-2011
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
Hola maiquemasque.

Cita:
ecfisa, de todas formas probé tu código también, y no sirve
Es que como te dije antes en mi segundo mensaje, no te puse código funcional para que copies y pegues.
Sólo te estaba orientando sobre que función debías usar: MoveBy. Si mirás el código de Caro verás que la encontrás allí.

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 07-04-2011 a las 17:26:19.
Responder Con Cita
  #12  
Antiguo 07-04-2011
maiquemasque maiquemasque is offline
Miembro
 
Registrado: nov 2009
Posts: 14
Poder: 0
maiquemasque Va por buen camino
Si ecfisa, perdona, es verdad, faltaba completarlo utilizando PanelCount y PanelIndex. Y el caso es que las llegué a ver mirando en la ayuda. Si hasta estuve viendo de que componente derivaba el TDBCtrlGrid para ver si podía utilizar algún método que estuviera en esa clase...en fin, que al final era tan sencillo jeje.

See you! ■ ■ ■
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
Como saber si un DBComboBox esta incluido en un TDBCtrlGrid David Varios 5 27-10-2008 15:29:11
Buscador de Productos Para Pantalla Tactil GlauK Varios 1 24-07-2008 17:38:19
Es TDBCtrlGrid el control adecuado para un TPV hibero OOP 1 22-04-2008 08:45:18
Un dbgrid con imagenes para tactil nugame Varios 2 19-11-2005 22:14:14
¿Cómo puedo hacer para imprimir en un QReport el Title en todas sus páginas?? nuri Impresión 2 09-08-2005 13:52:49


La franja horaria es GMT +2. Ahora son las 07:52:39.


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