Hola invitado         02 Sep, 2010 - 04:35
Menú principal
 
Ads
 
Patrocinadores
 
Anuncios
 
© 2009 PortalFox
Crear una barra de herramientas en un formulario SDI lecturas 14701
 Enviado por Luis María Guayán en Viernes, 07 Octubre, 2005
Formularios Ejemplo de como crear una barra de herramientas en un formulario SDI (Interfaz de un solo documento - Single Document Interface) en tiempo de ejecución.

Crear una barra de herramientas en un formulario SDI

Luis María Guayán Por Luis María Guayán, Tucumán, Argentina


Introducción

Muchas veces he leído en los distintos foros referidos a Visual FoxPro, mensajes sobre el tema de crear una barra de herramientas en un formulario. En este artículo expondré un ejemplo de un formulario SDI (Interfaz de un solo documento - Single Document Interface) en el cual crearemos una barra de herramientas en tiempo de ejecución.

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

Comentarios

Espero que este ejemplo les sea de utilidad para lograr una interfaz distinta en las aplicaciones desarrolladas. Visual FoxPro trae en la aplicación "Solution" un ejemplo similar donde se muestra un formulario SDI, en el cual se agrega un menú, una barra de herramientas, y se crean ventanas secundarias. Para ver la aplicación "Solution" ejecute:

DO (HOME(2) + "Solution\Solution") 

Hasta la próxima.

Luis María


 Versión imprimible  
Crear una barra de herramientas en un formulario SDI | Entrar/Crear una cuenta | 1 Comentario
Los comentarios son propiedad de sus respectivos autores.
No somos responsables de su contenido.

Re: Crear una barra de herramientas en un formulario SDI


por amby en 07 Oct, 2005 - 05:45
(Información del usuario  | Enviar un mensaje http://www.amby.net)
Muy bueno Luis Ma, como siempre.

¡ Muchas gracias !

Saludos,

Ana
www.amby.net




Todas las marcas y los logos utilizados en este sitio son propiedad de sus respectivos dueños.
Los artículos, noticias y comentarios son propiedad y responsabilidad de sus respectivos autores.
Copyright © 2000-2010 PortalFox. Todos los derechos reservados.