![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Invertir funcionamiento botones TDBNavigator
Hola compañeros, quería saber si se puede invertir el funcionamiento de los botones de un TDBNavigator en Delphi 5.
Lo que quiero es intercambiar el funcionamiento de nbFirst con el de nbLast y el de nbPrior con nbNext. Lo intente capturando el boton pulsado en el evento beforeAction, pero el problema está en que si nos encontramos en uno de los extremos (primero o último registros), el par nbFirst-nbPrior y el nbLast-nbNext aparecen desabilitados según corresponda y me quedo bloqueado en un registro. También pensé en crear un componente heredado de TDBNavigator, pero si puedo hacerlo de otra manera y evitar esto lo prefiero. ¿Se les ocurre alguna idea de como realizarlo? Muchas gracias por vuestra ayuda. Un saúdo.
__________________
Si no lees esto no vivirás tranquilo Non lle poñades chatas â obra namentras non se remata. O que pense que vai mal que traballe n’ela; hai sitio para todos. (Castelao) |
#2
|
||||
|
||||
Hola Ivanzinho,
Extraño requerimiento. ¿Porqué es necesario hacer eso? ¿Lo dices más por una cuestión de alguna "estética" de los botones? ¿Necesariamente debes usar un TNavigator? Porque la solución "pobre" Y simple es poner tantos botones como sean necesarios y que llame al evento adecuado del TNavigator (estando este ocultado). Saludos, |
#3
|
||||
|
||||
creo que a fin de cuentas seria mejor derivar del componente y cambiarle el comportamiento, es menos trabajo
__________________
...Yo naci en esta ribera del arauca vibr@d0r Soy hermano de la espuma, de la garza, de la rosa y del sol... Viva Venezuela |
#4
|
||||
|
||||
Puede que la solución de Eduardo si se puede llegar a cabo. Al menos asi lo estoy entiendo ahora... me acabo de fijar en la VCL y los métodos necesarios para alterar están en la sección protected por lo que en teoria no habría problemas.
Yo estaba pensando en que serían privados. Saludos, |
#5
|
||||
|
||||
Cita:
![]() Cita:
Cuando los usuarios acceden a la pantalla se deben cargar todos los registros no tratados y los introducidos en el último mes, pueden ser unos 1000 registros, y se visualice el último registro introducido. Intenté convencerlos de que eso me parecía una tontería, ya que 1000 registros no los van a utilizar, utilizarán a lo sumo 10 y el modulo incluye la posibilidad de realizar filtros que permiten localizar facilemente 1 registro o un grupo de registros en base a unas condiciones, pero me dijeron que no, que el resto de modulos de la aplicación tenían ese funcionamiento y que lo querían así. Por lo que decidí realizar la consulta ordenada descendentemente por número de registro, para evitar tener que hacer un last y que así solo se realice el fetch de un registro. El problema de esto es que si queremos ir al registro anterior debemos pulsar el boton nbNext ya que están ordenados descendentemente, y en el resto de la aplicación nbNext te lleva al siguiente y nbPrior al anterior. Por esto es por lo que busco este funcionamiento del TDBNavigator. Espero haberme explicado ![]() Cita:
Cita:
![]() Un saúdo y muchas gracias, Delphius, por responder
__________________
Si no lees esto no vivirás tranquilo Non lle poñades chatas â obra namentras non se remata. O que pense que vai mal que traballe n’ela; hai sitio para todos. (Castelao) |
#6
|
||||
|
||||
Cita:
Cita:
Sí, si no tengo otra solución lo haré así, pero de principio me da algo de miedo ![]() ![]()
__________________
Si no lees esto no vivirás tranquilo Non lle poñades chatas â obra namentras non se remata. O que pense que vai mal que traballe n’ela; hai sitio para todos. (Castelao) |
#7
|
||||
|
||||
Cita:
![]() ![]()
__________________
...Yo naci en esta ribera del arauca vibr@d0r Soy hermano de la espuma, de la garza, de la rosa y del sol... Viva Venezuela |
#8
|
||||
|
||||
Cita:
Lo dejo aquí por hoy, que es sabado por la tarde y me está esperando mi novia (no puedo tardar ![]() ![]() ![]() Muchas gracias por sus aportes, uno se siente comodo con gente así. Un saúdo.
__________________
Si no lees esto no vivirás tranquilo Non lle poñades chatas â obra namentras non se remata. O que pense que vai mal que traballe n’ela; hai sitio para todos. (Castelao) Última edición por Ivanzinho fecha: 02-02-2008 a las 16:54:04. |
#9
|
||||
|
||||
Cita:
![]()
__________________
...Yo naci en esta ribera del arauca vibr@d0r Soy hermano de la espuma, de la garza, de la rosa y del sol... Viva Venezuela |
#10
|
||||
|
||||
![]() ¡Hola!
Entiendo la situación, una flecha "->" es ir al "siguiente hacia arriba" y una flecha "<-" simboliza ir al "anterior hacia abajo". Si quieres hacerlo con TDBNavigator, el reto sería estudiar esa clase, en especial sus métodos virtuales/mensaje, y crear una clase derivada que cambie algunos aspectos de su comportamiento. Antes de llegar a eso, se me ocurre que si el único problema es causado por las propiedades BOF y EOF del conjunto de datos, cuando éstas adquieren un valor de True, y no te importaría que en ningún momento tuviesen ese valor, tal vez podría emplearse un truco de "reposicionamiento" del conjunto de datos para que nunca obtenga de forma permanente los estados BOF y EOF. Desde luego, la derivación del componente parece ser la solución más elegante, si es que la estructura de la clase lo facilita. Sería cosa de echarle un vistazo... Seguimos en contacto. Al González. Última edición por Al González fecha: 03-02-2008 a las 05:24:20. |
#11
|
|||
|
|||
Si el intercambio de acciones ya lo tienes resuelto con el BeforeAction, basta intercambiar el estado de los botones. Esto lo puedes hacer en el evento OnDataChange del DataSource asociado al DBNavigator:
El único impedimento aquí, es que Buttons es una propiedad protegida del DBNavigator, pero puedes "desprotegerla" fácilmente añadiendo esta declaración antes de tu formulario:
Bye |
#12
|
||||
|
||||
Efectivamente, con la propuesta de keyboy consigo lo deseado, por lo que para ir tirando me va a valer. Pero mi intención es derivar el componente ya que es una opción que no descarto utilizar en otros modulos de la aplicación.
Muchas gracias a todos por vuestra ayuda. Un saúdo.
__________________
Si no lees esto no vivirás tranquilo Non lle poñades chatas â obra namentras non se remata. O que pense que vai mal que traballe n’ela; hai sitio para todos. (Castelao) |
#13
|
|||
|
|||
Veo un poco difícil que pueda derivarse un componente del TDBNavigator para lograr este comportamiento. Los métodos involucrados en el cambio de estado del dataset (DataChanged, EditingChanged y ActiveChanged), si bien son métodos protegidos, no son virtuales, por lo que no pueden redefinirse.
Bye |
#14
|
||||
|
||||
Sí, ya me había fijado. En principio a mi sólo me interesaba modificar el DataChanged, pero me encontré con ese problema.
Al final lo dejé como me indicaste anteriormente incluyendo en el formcreate el siguiente código :
Así obtengo el funcionamiento requerido y por ahora me vale perfectamente. Un saúdo y nuevamente gracias.
__________________
Si no lees esto no vivirás tranquilo Non lle poñades chatas â obra namentras non se remata. O que pense que vai mal que traballe n’ela; hai sitio para todos. (Castelao) |
![]() |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
TDBNavigator | emeritos | Conexión con bases de datos | 8 | 04-09-2007 11:52:30 |
Invertir colores del texto de un richedit | viveba | OOP | 2 | 27-05-2007 16:38:26 |
invertir columnas por filas en dbgrid | emeceuy | Varios | 5 | 10-10-2005 05:30:54 |
Invertir un color | Keiso | API de Windows | 1 | 20-08-2004 02:05:27 |
invertir una tabla | ebeltete | SQL | 8 | 23-05-2003 01:10:59 |
![]() |
|