martes, 13 de abril de 2010

BARRAS DE HERRAMIENTAS FORMULARIO ESCRITORIO

Lo necesario

Para crear un formulario SDI, Visual FoxPro cuenta con un tipo de formulario llamado "formulario de nivel superior". Estos formularios aparecen como ventanas independientes sobre el escritorio de Windows y también aparecen en la barra de tareas de Windows. Para lograr un formulario de nivel superior, solo debemos configurar la propiedad ShowWindow = 2 (Como formulario de nivel superior).

Para crear la barra de herramientas contenida en un formulario de nivel superior, debemos indicar esto configurando la propiedad ShowWindow = 1 (En formulario de nivel superior)

La clase ToolBar

Vamos a definir nuestra barra de herramientas programáticamente a partir de la clase ToolBar. Cuando se crea una barra de herramientas, VFP coloca los controles de izquierda a derecha en el orden que aparecen en la definición de la clase.

Escribiremos en los métodos Clicks de los controles añadidos, un código simple como un MESSAGEBOX("Hola !") para mostrar el funcionamiento de cada control dentro de la barra de tareas.

El formulario

En formulario del ejemplo vamos a incorporar varios botones de comandos: uno crear la barra de herramientas, cuatro para acoplar la barra de herramientas en las distintas posiciones permitidas, y otro para desacoplar la barra de herramientas.

Vamos a crear la propiedad personalizada ThisForm.oMiToolBar para crear y mantener la barra de herramientas dentro del alcance del formulario.

Una vez ejecutado el código mostrado mas abajo, obtendremos un formulario como el de la siguiente figura.

El código

En el siguiente código está las definiciones de nuestras clases MiForm y MiToolBar.

PUBLIC goMiForm
goMiForm = CREATEOBJECT("MiForm")
goMiForm.SHOW(1)
RETURN
*--
*-- Clase MiForm
*--
DEFINE CLASS MiForm AS FORM
*-- Propiedades
SHOWWINDOW = 2 && Formulario de nivel superior
AUTOCENTER = .T.
ALWAYSONTOP = .T.
CAPTION = "Ejemplo de ToolBar en un formulario SDI"
NAME = "MiForm"
*-- Objetos
ADD OBJECT cmd1 AS COMMANDBUTTON WITH ;
TOP = 14, LEFT = 120, HEIGHT = 24, WIDTH = 120, ;
CAPTION = "Crear ToolBar", NAME = "cmd1"
ADD OBJECT cmd2 AS COMMANDBUTTON WITH ;
TOP = 50, LEFT = 120, HEIGHT = 24, WIDTH = 120, ;
CAPTION = "Acoplar arriba", NAME = "cmd2"
ADD OBJECT cmd3 AS COMMANDBUTTON WITH ;
TOP = 74, LEFT = 60, HEIGHT = 24, WIDTH = 120, ;
CAPTION = "Acoplar izquierda", NAME = "cmd3"
ADD OBJECT cmd4 AS COMMANDBUTTON WITH ;
TOP = 74, LEFT = 180, HEIGHT = 24, WIDTH = 120, ;
CAPTION = "Acoplar derecha", NAME = "cmd4"
ADD OBJECT cmd5 AS COMMANDBUTTON WITH ;
TOP = 98, LEFT = 120, HEIGHT = 24, WIDTH = 120, ;
CAPTION = "Acoplar abajo", NAME = "cmd5"
ADD OBJECT cmd6 AS COMMANDBUTTON WITH ;
TOP = 134, LEFT = 120, HEIGHT = 24, WIDTH = 120, ;
CAPTION = "Desacoplar", NAME = "cmd6"
ADD OBJECT cmdSalir AS COMMANDBUTTON WITH ;
TOP = 182, LEFT = 120, HEIGHT = 24, WIDTH = 120, ;
CAPTION = "Salir", NAME = "cmdSalir"
*-- Metodos
PROCEDURE cmd1.CLICK
IF NOT PEMSTATUS(THISFORM,"oMiToolBar",5)
THISFORM.ADDPROPERTY("oMiToolBar",NULL)
ENDIF
IF ISNULL(THISFORM.oMiToolBar)
THISFORM.oMiToolBar = CREATEOBJECT("MiToolBar")
THISFORM.oMiToolBar.SHOW
ENDIF
ENDPROC
PROCEDURE cmd2.CLICK
IF PEMSTATUS(THISFORM,"oMiToolBar",5) ;
AND NOT ISNULL(THISFORM.oMiToolBar)
THISFORM.oMiToolBar.DOCK(0)
ENDIF
ENDPROC
PROCEDURE cmd3.CLICK
IF PEMSTATUS(THISFORM,"oMiToolBar",5) ;
AND NOT ISNULL(THISFORM.oMiToolBar)
THISFORM.oMiToolBar.DOCK(1)
ENDIF
ENDPROC
PROCEDURE cmd4.CLICK
IF PEMSTATUS(THISFORM,"oMiToolBar",5) ;
AND NOT ISNULL(THISFORM.oMiToolBar)
THISFORM.oMiToolBar.DOCK(2)
ENDIF
ENDPROC
PROCEDURE cmd5.CLICK
IF PEMSTATUS(THISFORM,"oMiToolBar",5) ;
AND NOT ISNULL(THISFORM.oMiToolBar)
THISFORM.oMiToolBar.DOCK(3)
ENDIF
ENDPROC
PROCEDURE cmd6.CLICK
IF PEMSTATUS(THISFORM,"oMiToolBar",5) ;
AND NOT ISNULL(THISFORM.oMiToolBar)
THISFORM.oMiToolBar.DOCK(-1)
ENDIF
ENDPROC
PROCEDURE cmdSalir.CLICK
THISFORM.RELEASE
ENDPROC
ENDDEFINE
*--
*-- Clase MiToolBar
*--
DEFINE CLASS MiToolBar AS TOOLBAR
*-- Propiedades
CAPTION = "Saludo"
SHOWTIPS = .T.
SHOWWINDOW = 1 && En formulario de nivel superior
NAME = "MiToolBar"
*-- Objetos
ADD OBJECT cmdEsp AS COMMANDBUTTON WITH ;
HEIGHT = 24, WIDTH = 32, ;
PICTURE = HOME(1) + "graphics\icons\flags\flgspain.ico", ;
CAPTION = "", NAME = "cmdEsp", TOOLTIPTEXT = "Saludo"
ADD OBJECT sep1 AS SEPARATOR WITH ;
NAME = "sep1"
ADD OBJECT cmdBra AS COMMANDBUTTON WITH ;
HEIGHT = 24, WIDTH = 32, ;
PICTURE = HOME(1) + "graphics\icons\flags\flgbrazl.ico", ;
CAPTION = "", NAME = "cmdBra", TOOLTIPTEXT = "Saudação"
ADD OBJECT cmdUSA AS COMMANDBUTTON WITH ;
HEIGHT = 24, WIDTH = 32, ;
PICTURE = HOME(1) + "graphics\icons\flags\flgusa02.ico", ;
CAPTION = "", NAME = "cmdUSA", TOOLTIPTEXT = "Greet"
ADD OBJECT cmdGer AS COMMANDBUTTON WITH ;
HEIGHT = 24, WIDTH = 32, ;
PICTURE = HOME(1) + "graphics\icons\flags\flggerm.ico", ;
CAPTION = "", NAME = "cmdGer", TOOLTIPTEXT = "Grüß"
*-- Metodos
PROCEDURE cmdEsp.CLICK
MESSAGEBOX("Hola !", 64, "Saludo")
ENDPROC
PROCEDURE cmdBra.CLICK
MESSAGEBOX("Olá !", 64, "Saudação")
ENDPROC
PROCEDURE cmdUSA.CLICK
MESSAGEBOX("Hello !", 64, "Greet")
ENDPROC
PROCEDURE cmdGer.CLICK
MESSAGEBOX("Hallo !", 64, "Grüß")
ENDPROC
ENDDEFINE

No hay comentarios:

Publicar un comentario