botones de navegación en una barra de herramientas

420 views
Skip to first unread message

contabil...@gmail.com

unread,
Jun 2, 2014, 9:31:46 PM6/2/14
to publice...@googlegroups.com
Buenas tardes;

estoy iniciando en programación vfp, quisiera saber si como puedo programar los botones de navegación (primero,anterior,siguiente,último) en una barra de herramientas y desde allí controlar estas acciones en todos los formularios, actualmente tengo estos botones en cada formulario, pero me gustaría simplificarlo y controlarlo desde un toolbar, y que cada vez que acceda a un formulario pueda ejecutar estas acciones sin importar en que tabla este trabajando

gracias desde ya por su ayuda

ZeRoberto

unread,
Jun 2, 2014, 9:57:49 PM6/2/14
to publicesvfoxpro
Créeme que es mejor desde cada formulario, porque hay usuarios que no saben donde clickear y si la pantalla es de 22" tienen que levantar la cabeza medio metro para poder encontrarlos. Pero si los quieres hace tiempos Marcelo Barberis me envió el Tastrade haber si lo puede compartir nuevamente


ZeRoberto

unread,
Jun 2, 2014, 10:03:28 PM6/2/14
to publicesvfoxpro
Yo lo trabajo así, no se ve bonito pero funciona bien a la hora de comparar duplicar y editar



Luis Salazar

unread,
Jun 2, 2014, 10:36:58 PM6/2/14
to publice...@googlegroups.com
Hole ZeRoberto  .. Donde puedo conseguir esos iconos , de donde los puedo bajar

Lewis López

unread,
Jun 2, 2014, 10:43:21 PM6/2/14
to publice...@googlegroups.com
https://www.iconfinder.com/

Saludos.


Jesucristo es el verdadero Dios y la vida eterna. 1 Juan 5:20
Lewis Oswaldo López Gómez 
Cel:      311 665 0342
Skipe:  asaie2010

Puerto Libertador - Córdoba-Colombia




Date: Mon, 2 Jun 2014 22:06:53 -0430
Subject: Re: [vfp] botones de navegación en una barra de herramientas
From: luisj...@gmail.com
To: publice...@googlegroups.com

ZeRoberto

unread,
Jun 2, 2014, 11:28:30 PM6/2/14
to publicesvfoxpro

Fidel Charny

unread,
Jun 3, 2014, 7:12:35 AM6/3/14
to publice...@googlegroups.com
De acuerdo con Ze Roberto. Progama una clase Commandgroup y le agregas una propiedad a la que, en tiempo de ejecución le asignas la referencia de objeto Grid a la que corresponda. De esa forma, si tienes 2 o más  grids en un form, todos pueden tener su control de desplazamiento. En mi caso, el control tiene 5 botones, el quinto es un This.Objgrid.Refresh, donde ObjGrid es una propiedad de usuario del CommandGRoup que tiene la referencia de objeto al grid que corresponde. La tabla o cursor, es Select (this.objgrid.recordSource), si programas el click del commandgroup.

contabil...@gmail.com

unread,
Jun 9, 2014, 5:58:51 PM6/9/14
to publice...@googlegroups.com
Hola Fidel, gracias por el comentario, lo que pasa es que hasta ahora estoy empezando en programación, podrías explicarme un poco más al detalle

gracias,

Benjamin

Fidel Charny

unread,
Jun 9, 2014, 6:33:32 PM6/9/14
to publice...@googlegroups.com

Puedes hacerlo con el diseñador de clases.
[New]
En la caja de diálogo que aparece pones el nombre que tendrá tu clase, En el combo Based on seleccionas Commandgroup y en Store In indicas el nombre de la biblioteca vcx en la que estará tu clase (no uses la bibilioteca autogenerada, si no creaste ninguna clase, reemplaza por el nombre que quieras darle).
Una vez aceptado podrás modificar la clase como necesites.
En el ejemplo le agrego a la clase una propiedad objGrid=null (valor inicial). Este valor será modificado en tiempo de ejecución con la referencia de objeto del control Grid en el que deba producir sus efectos.
Supongamos que la biblioteca (vcx) se llama "MisClases" y la clase commandgroup creada se llama "cmgMovimGrid", en cualquier formulario que tenga uno o más controles grids podrás agreagar para cada uno de ellos esta clase:
Thisform.NewObject("cmgMvmGrilla","cmgMovimGrid","MisClases.vcx")
thisform.cmgMvmGrilla.ObjGrid = Thisform.Grilla         && donde Grilla es un Control Grid Name="Grilla"
Thisform.NewObject("cmgMvmGrillo","cmgMovimGrid","MisClases.vcx")
thisform.cmgMvmGrillo.ObjGrid = Thisform.Grillo         && donde Grillo es un Control Grid Name="Grillo"
Esto sería una forma de agregarlos por código (tendrás que indicarle la ubicación). También lo puedes agregar manualmente desde la biblioteca (View Classes).

De manera similar te conviene programar una clase Grid que resuelva todos los temas comunes.

Lo que sigue es un segmento de la versión creada con Foxbin2prg (de Fernando D. Bozzo) de la clase commandgroup, para darte una idea de como se puede armar.
Como podrás  ver, no hay código en los botones, solamente las dimensiones y la asignación de Picture y DisabledPicture.
Todo el código está en el evento click de la clase.

DEFINE CLASS thmovim AS commandgroup
     
*< CLASSDATA: Baseclass="commandgroup" Timestamp="" Scale="Pixels" Uniqueid="" />

   
*<DefinedPropArrayMethod>
       
*p: objgrid
   
*</DefinedPropArrayMethod>

   
BackColor = 201,210,211
   
ButtonCount = 5
   
Height = 28
   
Name = "thmovim"
    objgrid
= null
   
Value = 1
   
Width = 111
   
Command1.Caption = ""
   
Command1.DisabledPicture = ..\graphics\flemtle32cn.bmp
   
Command1.FontSize = 8
   
Command1.Height = 20
   
Command1.Left = 4
   
Command1.Name = "Command1"
   
Command1.Picture = ..\graphics\flemtle32c.bmp
   
Command1.ToolTipText = "Ir al Inicio de la Tabla."
   
Command1.Top = 4
   
Command1.Width = 20
   
Command2.Caption = ""
   
Command2.DisabledPicture = ..\graphics\flemtri32cn.bmp
   
Command2.Height = 20
   
Command2.Left = 24
   
Command2.Name = "Command2"
   
Command2.Picture = ..\graphics\flemtri32c.bmp
   
Command2.ToolTipText = "Ir al Final de la Tabla."
   
Command2.Top = 4
   
Command2.Width = 20
   
Command3.Caption = ""
   
Command3.DisabledPicture = ..\graphics\flemle32cn.bmp
   
Command3.Height = 20
   
Command3.Left = 44
   
Command3.Name = "Command3"
   
Command3.Picture = ..\graphics\flemle32c.bmp
   
Command3.ToolTipText = "Ir al Registro Anterior."
   
Command3.Top = 4
   
Command3.Width = 20
   
Command4.Caption = ""
   
Command4.DisabledPicture = ..\graphics\flemri32cn.bmp
   
Command4.Height = 20
   
Command4.Left = 64
   
Command4.Name = "Command4"
   
Command4.Picture = ..\graphics\flemri32c.bmp
   
Command4.ToolTipText = "Ir al Registro Siguiente."
   
Command4.Top = 4
   
Command4.Width = 20
   
Command5.Caption = ""
   
Command5.DisabledPicture = ..\graphics\fledup32cn.bmp
   
Command5.Height = 20
   
Command5.Left = 84
   
Command5.Name = "Command5"
   
Command5.Picture = ..\graphics\fledup32b.bmp
   
Command5.ToolTipText = "Enfocar la Cuadrícula."
   
Command5.Top = 4
   
Command5.Width = 24
   
    PROCEDURE
Click
        SELECT
(This.objGrid.RecordSource )
       
do case
           
case this.value=1
                go top
           
case this.value=2
                go bott
           
case this.value=3
                IF
!BOF()
                    SKIP
-1
                ENDIF
           
case this.value=4
                IF
!EOF()
                    SKIP
                ENDIF
       
           
case this.value=5
               
This.objGrid.REfresh
        endcase
       
This.objGrid.SetFocus
       
    ENDPROC

Mik

unread,
Jun 10, 2014, 1:24:49 AM6/10/14
to publice...@googlegroups.com
Yo utlizo este codigo en cada boton de navegación en la toolbar. Ejemplo en el boton "Siguiente registro"

*** Boton Siguiente registro

IF TYPE('_Screen.Activeform.Name') = 'C' AND ;
PEMSTATUS(_Screen.activeform, 'Siguiente_registro', 5)
  _Screen.ActiveForm.Siguiente_Registro()
ENDIF

Este codigo te asegura en el formulario activo que exista el metodo "Siguiente_Registro" y si existe ejecuta el codigo programado.
En tus forms debes programar el metodo respectivo que ejecute la acción sobre la tabla o cursor.

Saludos

Miguel Herbias
LIMA-PERU

contabil...@gmail.com

unread,
Jun 11, 2014, 5:49:41 PM6/11/14
to publice...@googlegroups.com
Excelente, esto es precisamente lo que necesitaba

muchas gracias
Reply all
Reply to author
Forward
0 new messages