Hola invitado         02 Sep, 2010 - 04:40
Menú principal
 
Ads
 
Patrocinadores
 
Anuncios
 
© 2009 PortalFox
Agregar un menú en un formulario SDI lecturas 9476
 Enviado por Luis María Guayán en Lunes, 17 Octubre, 2005
Formularios Ejemplo de como agregar un menú en un formulario SDI (Interfaz de un solo documento - Single Document Interface).

Agregar un menú en un formulario SDI

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


Introducción

Continuando con el tema de formularios SDI (Interfaz de un solo documento - Single Document Interface), esta vez mostraré como agregar un menú en un formulario de nivel superior.

Crear el formulario de nivel superior

Como ya vimos en un artículo anterior, para crear un formulario SDI en Visual FoxPro, debemos crear un Formulario de nivel superior, configurando la propiedad ShowWindow = 2 (Como formulario de nivel superior). Un formulario de nivel superior aparece como una ventana independiente sobre el escritorio de Windows y se muestra en la barra de tareas de Windows.

Crear el menú

La creación de un menú SDI para agregar en un formulario de nivel superior, es igual que la creación de cualquier otro menú, solo debemos marcar la casilla de verificación Formulario de nivel superior en el cuadro de dialogo Opciones generales que se muestra al seleccionar la opción Ver -> Opciones generales desde el diseñador de menú, como lo muestra la figura siguiente:

Cuando generamos el menú con esta opción activada, se deberá llamar al menú desde el método Init del formulario de nivel superior con una sentencia como la siguiente

DO MiMenu.mpr WITH THISFORM,.T.

Editando el archivo MiMenu.mpr podemos ver en las primeras líneas comentadas, una ayuda con las distintas formas de llamar al menú generado.

Código de ejemplo

El siguiente código es un ejemplo para mostrar un formulario de nivel superior con un menú incorporado. Para ejecutarlo con un menú personalizado, se debe habilitar la línea DO MiMenu.mpr WITH Thisform, .T. en el método Init del formulario, y quitar la llamada al procedimiento MiMenuEjemplo.

PUBLIC goMiForm
goMiForm=CREATEOBJECT("MiForm")
goMiForm.SHOW(1)
RETURN
*---
*--- Definición de MiForm
*---
DEFINE CLASS MiForm AS FORM
  SHOWWINDOW = 2
  DOCREATE = .T.
  AUTOCENTER = .T.
  CAPTION = "Ejemplo de menú en un formulario SDI"
  NAME = "MiForm"

  PROCEDURE INIT
    *DO MiMenu.mpr WITH Thisform, .T.
    DO MiMenuEjemplo WITH THISFORM, .T.
  ENDPROC

  PROCEDURE DESTROY
    RELEASE MENU (THIS.NAME) EXTENDED
  ENDPROC
ENDDEFINE
*---
*--- MiMenuEjemplo.spr
*---
PROCEDURE MiMenuEjemplo
  LPARAMETERS oFormRef, getMenuName, lUniquePopups
  LOCAL cMenuName, nTotPops, a_menupops, cTypeParm2, cSaveFormName
  IF TYPE("m.oFormRef") # "O" OR ;
      LOWER(m.oFormRef.BASECLASS) # 'form' OR ;
      m.oFormRef.SHOWWINDOW # 2
    MESSAGEBOX([Este menú solo puede ser llamado en un formulario de nivel superior])
    RETURN
  ENDIF
  m.cTypeParm2 = TYPE("m.getMenuName")
  m.cMenuName = SYS(2015)
  m.cSaveFormName = m.oFormRef.NAME
  IF m.cTypeParm2 = "C" OR (m.cTypeParm2 = "L" AND m.getMenuName)
    m.oFormRef.NAME = m.cMenuName
  ENDIF
  IF m.cTypeParm2 = "C" AND !EMPTY(m.getMenuName)
    m.cMenuName = m.getMenuName
  ENDIF
  DIMENSION a_menupops[3]
  IF TYPE("m.lUniquePopups")="L" AND m.lUniquePopups
    FOR nTotPops = 1 TO ALEN(a_menupops)
      a_menupops[m.nTotPops]= SYS(2015)
    ENDFOR
  ELSE
    a_menupops[1]="archivo"
    a_menupops[2]="edición"
    a_menupops[3]="ayuda"
  ENDIF
  *---
  *--- Definición del menú
  *---
  DEFINE MENU (m.cMenuName) IN (m.oFormRef.NAME) BAR
  DEFINE PAD _1mv0kg6re OF (m.cMenuName) PROMPT "\<Archivo" COLOR SCHEME 3 KEY ALT+A
  DEFINE PAD _1mv0kg6rf OF (m.cMenuName) PROMPT "\<Edición" COLOR SCHEME 3 KEY ALT+E
  DEFINE PAD _1mv0kg6rg OF (m.cMenuName) PROMPT "A\<yuda" COLOR SCHEME 3 KEY ALT+Y
  ON PAD _1mv0kg6re OF (m.cMenuName) ACTIVATE POPUP (a_menupops[1])
  ON PAD _1mv0kg6rf OF (m.cMenuName) ACTIVATE POPUP (a_menupops[2])
  ON PAD _1mv0kg6rg OF (m.cMenuName) ACTIVATE POPUP (a_menupops[3])

  DEFINE POPUP (a_menupops[1]) MARGIN RELATIVE SHADOW COLOR SCHEME 4
  DEFINE BAR 1 OF (a_menupops[1]) PROMPT "\<Nuevo" PICTRES _MFI_NEW
  DEFINE BAR 2 OF (a_menupops[1]) PROMPT "\<Abrir" PICTRES _MFI_OPEN
  DEFINE BAR 3 OF (a_menupops[1]) PROMPT "\-"
  DEFINE BAR 4 OF (a_menupops[1]) PROMPT "\<Guardar" PICTRES _MFI_SAVE
  DEFINE BAR 5 OF (a_menupops[1]) PROMPT "\<Imprimir" PICTRES _MFI_SYSPRINT
  DEFINE BAR 6 OF (a_menupops[1]) PROMPT "\<Enviar" PICTRES _MFI_SEND
  DEFINE BAR 7 OF (a_menupops[1]) PROMPT "\-"
  DEFINE BAR 8 OF (a_menupops[1]) PROMPT "\<Salir" PICTRES _MFI_QUIT
  ON SELECTION BAR 8 OF (a_menupops[1]) DO _Salir

  DEFINE POPUP (a_menupops[2]) MARGIN RELATIVE SHADOW COLOR SCHEME 4
  DEFINE BAR 1 OF (a_menupops[2]) PROMPT "\<Deshacer" PICTRES _MED_UNDO
  DEFINE BAR 2 OF (a_menupops[2]) PROMPT "\-"
  DEFINE BAR 3 OF (a_menupops[2]) PROMPT "Cor\<tar" PICTRES _MED_CUT
  DEFINE BAR 4 OF (a_menupops[2]) PROMPT "\<Copiar" PICTRES _MED_COPY
  DEFINE BAR 5 OF (a_menupops[2]) PROMPT "\<Pegar" PICTRES _MED_PASTE

  DEFINE POPUP (a_menupops[3]) MARGIN RELATIVE SHADOW COLOR SCHEME 4
  DEFINE BAR 1 OF (a_menupops[3]) PROMPT "\<Ayuda" PICTRES _MST_HPSCH
  DEFINE BAR 2 OF (a_menupops[3]) PROMPT "\-"
  DEFINE BAR 3 OF (a_menupops[3]) PROMPT "Acerca \<de..." PICTRES _MST_ABOUT

  ACTIVATE MENU (m.cMenuName) NOWAIT

  IF m.cTypeParm2 = "C"
    m.getMenuName = m.cMenuName
    m.oFormRef.NAME = m.cSaveFormName
  ENDIF
ENDPROC

PROCEDURE _Salir
  _SCREEN.ACTIVEFORM.RELEASE
ENDPROC

Al ejecutar el código anterior, veremos el formulario SDI con el menú como lo muestra la siguiente figura:

Comentarios

Recordar que 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")

O directamente corra el ejemplo del formulario SDI ejecutando:

DO FORM (HOME(2) + "\Solution\Forms\SDIForm.scx")

Hasta la próxima.

Luis María


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

En VFP9, Como actualizar los Texbox de un Form desde una Clase ToolBar


por Fridgar en 02 Sep, 2010 - 11:34
(Información del usuario  | Enviar un mensaje 
Como actualizo los texbox con los datos de los campos de una tablas de un formulario desde una clase ToolBar cada vez que haga click en los botones Primero, Anterior, Siguiente y Ultimos o con los botones agregar, modificar o desacer.

Estoy trabajando con Variables de memorias, no directamente con los campos de la tabla.

La programacion de los botones la tengo en la Barra de Herramienta y hagao el llamado a la misma barra de herramienta cada vez que abro un formulario

Para eso utilizo el siguiente codigo

FOR i=1 TO FCOUNT()
a=FIELD(i)
b="this.oFormRef.txt"+FIELD(i)+".Value"
&b=&a
NEXT i
a=FIELD(1)
this.oformref.texto1.value=&a

Que lo tiene en un nuevo metodo que le agregue a la barra de herramienta y lo llame "Llenar_Campos"

Cualquier informacion por favor enviarla a fridgar@hotmail.com o fridgar@gmail.com

Gracias




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.