Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-02-2008
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.610
Poder: 32
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Smile

¡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.
Responder Con Cita
  #2  
Antiguo 03-02-2008
keyboy keyboy is offline
Miembro
 
Registrado: oct 2004
Posts: 367
Poder: 22
keyboy Va por buen camino
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:

Código Delphi [-]
procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField);
var
  ButtonEnabled: Boolean;

begin
  with DBNavigator1 do
  begin
    // intercambia estado entre prior y next
    ButtonEnabled := Buttons[nbPrior].Enabled;
    Buttons[nbPrior].Enabled := Buttons[nbNext].Enabled;
    Buttons[nbNext].Enabled := ButtonEnabled;

    // intercambia estado entre first y last
    ButtonEnabled := Buttons[nbFirst].Enabled;
    Buttons[nbFirst].Enabled := Buttons[nbLast].Enabled;
    Buttons[nbLast].Enabled := ButtonEnabled;
  end;
end;

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:

Código Delphi [-]
type
  TDBNavigator = class(DBCtrls.TDBNavigator);

Bye
Responder Con Cita
  #3  
Antiguo 04-02-2008
Avatar de Ivanzinho
[Ivanzinho] Ivanzinho is offline
Miembro Premium
 
Registrado: ene 2005
Ubicación: Galicia
Posts: 595
Poder: 22
Ivanzinho Va por buen camino
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)
Responder Con Cita
  #4  
Antiguo 04-02-2008
keyboy keyboy is offline
Miembro
 
Registrado: oct 2004
Posts: 367
Poder: 22
keyboy Va por buen camino
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
Responder Con Cita
  #5  
Antiguo 04-02-2008
Avatar de Ivanzinho
[Ivanzinho] Ivanzinho is offline
Miembro Premium
 
Registrado: ene 2005
Ubicación: Galicia
Posts: 595
Poder: 22
Ivanzinho Va por buen camino
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 :
Código Delphi [-]
procedure TFMovRec.FormCreate(Sender: TObject);
var
  Button: TNavigateBtn;
begin

.......

  with DBNavigator do
    begin
      Button := Buttons[nbPrior].Index;
      Buttons[nbPrior].Index := Buttons[nbNext].Index;
      Buttons[nbNext].Index := Button;
      Button := Buttons[nbFirst].Index;
      Buttons[nbFirst].Index := Buttons[nbLast].Index;
      Buttons[nbLast].Index := Button;
    end;

......

end;

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)
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

Temas Similares
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


La franja horaria es GMT +2. Ahora son las 07:38:24.


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