Sección de tutoriales y manuales vb

8 - Los Objetos de Visual basic y los menús

Volver al índice



 

 

 

En esta sección 8 se describen algunos de los principales objetos de visual basic que permiten trabajar por ejemplo con el portapapeles , datos de nuestra aplicación, información de la pantalla y fuentes del sistema También se ve el uso de los menues y menues contextuales

 

Contenido

 

 

 


1 - Introducción

Estos objetos que tienen sus propiedades y métodos definidos como cualquier otro objeto, son fundamentales para utilizarlos en tiempo de ejecución, y nos permiten obtener información y realizar tareas específicas y variadas como por ejemplo:

Trabajar con la pantalla (objeto Screen), obtener datos referentes a nuestra aplicación ( objeto App), el objeto Clipboard ( para trabajar con el portapapeles de windows) y algunos otros

 


 

2 - El objeto App

El objeto App posee una serie de propiedades para obtener información de nuestra aplicación

 

Propiedad Path

Esta propiedad nos devuelve una cadena con la ruta donde se encuentra el ejecutable de nuestro programa. Esta propiedad es de suma importancia, ya que nosotros siempre debemos "programar las rutas" de nuestra aplicación de forma relativa, es decir en donde realmente se encuentre nuestra aplicación, ya que el usuario puede instalar nuestro programa en un directorio cualquiera y de este modo si nosotros hemos puesto, por ejemplo de un archivo externo en una ruta absoluta (por ejemplo "c:\Archivos de programa", puede darse el caso de que la aplicación no encuentre dicho archivo ya que se ha instalado en otro directorio, ejecutarse en otra plataforma, etc..

Para resolver estos problemas sobre las referencias a las rutas de archivos, podemos utilizar el objeto App.path, y lo que hace esta propiedad es devolvernos el path de nuestra aplicación.

Ejemplo

ruta = App.Path & "\config.dat"

 

En el ejemplo anterior, si nuestra aplicación contiene un archivo de configuración del programa, un gráfico o cualquier otro fichero, para poder localizarlo lo hacemos mediante el objeto App.path mas el archivo que deseamos e interponiéndole la barra invertida.

Nota: lo que hay que tener en cuenta para que no se produzca un error en tiempo de ejecución, es que el objeto App.path nos devuelve solo el nombre de directorio de nuestra aplicación pero sin la barra invertida al final, es decir que si deseamos por ejemplo hacer referencia a un archivo de nuestra aplicación para trabajar con él, debemos agregarlo nosotros.

Otro ejemplo podría ser el siguiente, supongamos que tenemos un programa que carga una imagen en un formulario. Si nosotros hacemos una referencia al archivo de imagen mediante una ruta absoluta estaremos cometiendo un error, lo correcto sería

 

Dim Ruta As String


Ruta = App.Path & "\imagen.gif"

Me.Picture = LoadPicture(Ruta) 

 


Propiedad PrevInstance del objeto App

 

Esta propiedad se utiliza para comprobar si nuestro programa ya está cargado en memoria devolviéndonos un valor de tipo boolean, True en caso correcto o False si no está abierto o cargado en memoria.

La propiedad PervInstance es importante ya que un usuario, por error, puede abrir mas de una instancia de la aplicación, algo que no tendría mucho sentido en la mayoría de los casos.

De este modo si se intenta abrir el programa mas de una vez, podemos mostrar un mensaje informativo y descargar la aplicación mediante la sentencia End, o no mostrar nada y terminar la ejecución. Este ejemplo muestra un mensaje cuando se intenta abrir mas de una ves, y luego de aceptar el mensaje se cierra con End

 

 Private Sub Form_Initialize()

If App.PrevInstance = True Then
    
    
    MsgBox " La aplicación ya se encuentra cargada en memoria", vbInformation

    ' Finaliza el programa
    End

End If

End Sub

 

 

Otras propiedades del objeto App

 

 


3 - Objeto Screen

Con el objeto Screen se puede determinar y obtener información sobre las fuentes instaladas en el sistema operativo, la resolución actual de la pantalla, el formulario y/o control que está activo,

Un ejemplo para poder obtener la resolución del monitor:

 

Dim Ancho As Integer
Dim Alto As Integer


Ancho = (Screen.Width / Screen.TwipsPerPixelX)
Alto = (Screen.Height / Screen.TwipsPerPixelY)



MsgBox "La resolución en Pixeles del monitor es de: " & vbNewLine & _
        "Ancho: " & Ancho & vbNewLine & _
        "Alto: " & Alto, vbInformation 

 

Para obtener el alto y el ancho en pixeles debemos hacer una simple conversión ya que mediante las propiedades width y height obtenemos el ancho y el alto del monitor pero expresado en twips, para obtener ese valor en pixeles hay que dividirlo por la propiedad TwipsPerPixelX y TwipsPerPixelY, que son propiedades que las podemos acceder desde el objeto Screen

 

Ejemplo para poder obtener una lista de las fuentes instaladas en el sistema

 

El objeto screen posee un objeto o colección llamado Fonts que es un vector que contiene las fuentes del sistema y una propiedad llamada FontCount para saber la cantidad de fuentes.

Ejemplo para cargar las fuentes del sistema en un control ListBox

 

Dim La_Fuente As Integer


    'Recorre las fuentes
    For La_Fuente = 0 To Screen.FontCount - 1
       
        'Añade el nombre de la fuente al control
        List1.AddItem Screen.Fonts(La_Fuente)

    Next La_Fuente 

 

Mediante 4 líneas de código tenemos un control ListBox que muestra el nombre de todas las fuentes del sistema.

 

Nota: Para poder obntener las fuentes pero de una impersora, se realiza igual que en el paso anterior , con la diferencia que en ves de usar el Objeto Screen, se usa el Objeto Printer.

Por ejemplo

Colocar un ComboBox en el formulario donde se listarán las impresoras instaladas, y en agregar un Control ListBox donde agregarán las fuentes

vista del formulario con el listque contiene las fuentes y el combo que lista los printer

 

Código fuente en el formulario

Option Explicit
Private Sub Combo1_Click()
    Ver_fuentes Combo1.ListIndex
End Sub

Private Sub Form_Load()

    Dim ObjPrinter As Printer
    
        ' Recorre la lista de impresoras instaladas _
         en el sistema y agrega el nombre en el combo
    For Each ObjPrinter In Printers
        Combo1.AddItem ObjPrinter.DeviceName
    Next

End Sub

' Enumera las fuentes en el ListBox de la _
  impresora seleccionada en el Combo
Sub Ver_fuentes(Impresora As String)
    
    ' Referencia a la impersora
    Set Printer = Printers(Impresora)
    
    Dim i As Integer
    List1.Clear
    
    ' Lista las fuentes soportadas de la impresora
    For i = 0 To Printer.FontCount - 1
        List1.AddItem Printer.Fonts(i)
    Next
     
End Sub  

 

 

Enlaces relacionados

Listar las fuentes de windows y previsualizarlas

 


 

4 - El objeto ClipBoard

Con ClipBoard podemos trabajar con el portapapeles de windows, ya sea para establecer o recuperar datos del mismo.

Ejemplo:

Para recuperar el texto guardado en el portapapeles:

 

Dim cadena As String

cadena = Clipboard.GetText

MsgBox cadena 

Con este otro ejemplo podemos grabar o asignar un texto en el portapapeles

 

 Clipboard.SetText "cadena de texto a grabar o variable string"

 

Con el método Clear del objeto ClipBoard podemos borrar el contenido del portapapeles (no requiere ningún parámetro)

 

Clipboard.clear

 

Con la siguiente línea podemos copiar una imagen del portapapeles a un control picture, si es que la hay, usando el método Getdata del objeto Clipboard

 

Picture1.Picture = Clipboard.GetData

 

Lo siguiente copia una imagen cargada en un control de imagen al portapapeles, es decir hacer lo contrario:

 

Clipboard.SetData Picture1.Picture

 


5 - Menues en visual basic

 

Ejemplo para crear menúes y menúes contextuales o también llamados menú PopUp, que son aquellos que se despliegan con el botón derecho del mouse.

Casi todas las aplicaciones por mas pequeñas que sean, poseen un acceso a determinadas o casi todas las opciones de un programa por medio de un menú.

Si bien las opciones las podemos encontrar en la interface misma de la aplicación, ya sea por medio de botones, barras de herramientas etc.., nunca está demás que estén a mano por medio de un menú.

Visual Basic incorpora una herramienta llamada editor de menúes para poder crearlos

Nota: El editor de Manúes se encuentra en el menú herramientas y solo está disponible desde la vista diseño del formulario, es decir que si estás visualizando la ventana de código o un módulo de código deberás cerrarlas y dejar visible el formulario que estés diseñando para que la opción esté habilitada.

 

6 - Los menues de cabecera y submenues

 

Los menúes de cabecera son los menúes principales que contienen otros submenues. Por ejemplo en el menú del internet explorer, el menú archivo es el menú de cabecera o de primer nivel, y las opciones internas de este (abrir, guardar, imprimir, cerrar, etc...) son los submenues que están en un nivel por debajo del menú archivo.

Crear un menú

  1. El primer paso es diseñar un buen diagrama que incluya la mayoría de las opciones, para que el usuario las pueda tener a mano también en el menú.
  2. Si observas otras aplicaciones, estas respetan el orden y ubicación de sus menues, es decir que si estás creando un programa que tiene opciones para imprimir una hoja, esta se encontrarán en la sección del menú archivo, si tienes opciones de edición del documento como cortar copiar, pegar , seleccionar todo, etc..., las encontrarás en el menú "edición", si deseas crear un formulario "acerca de..", lo ubicarás en el menú ayuda con el "nombre acerca de...". esta forma de diseño y diagramación es fundamental para que el programa sea estándar y aceptado por todos, por llamarlo de alguna manera, ya que si bien nosotros recordamos el nombre y donde se encuentra ubicada cada opción, un usuario o tercero debe resultarle lo mas sencillo posible el acceso a las opciones del mismo.

 

 

7 - Agregar elementos en un menú

 

El siguiente ejemplo consiste en un formulario que contiene solo un control label que nos mostrará una leyenda con el texto del menú que seleccionamos o presionamos.

El menú estará compuesto por 3 menues de cabecera, el primero llamado "Archivo", el segundo "Edición" y el último "Ayuda". A su vez cada menú tendrá los siguientes submenues:

  1. Archivo : Este menú contendrá los submenues " Abrir ", " Guardar ", " Imprimir " y " Cerrar "
  2. Edición: Contendrá los submenues " Cortar ", " Copiar ", " Pegar ", " Seleccionar todo "
  3. Ayuda : Tendrá los submenues " Ayuda " y " Acerca de.. "

 

vista previa del editor que utiliza Visual Basic para crear los menues de opción

 

El cuadro de diálogo del editor de menú de visual basic posee los siguientes campos para rellenar. Algunos son opcionales y otros son obligatorios, como la propiedad Caption y Name:

 

Pasos a seguir:

  1. Una vez abierto el editor de menú, hay que ingreasar los elementos que componen el mismo. Para crear el menú "Archivo" que es un menú de cabecera o de nivel superior, debemos ingresar en la propiedad Caption la cadena &Archivo.
    Ahora le asignaremos un nombre en el campo Name.
    G Generalmente se suele utilizar en este campo el mismo nombre del menú pero con el prefijo mnu para luego poder distinguirlo fácilmente en el código. Entonces ingresamos en este campo mnuarchivo
  2. El segundo paso será ingresar los submenues que están por debajo del menu archivo. Para ello presionamos el botón "siguiente" donde ingresaremos el menú "Abrir". como este es un submenú debemos indicarlo con el botón que tiene una flecha hacia la Derecha. Al presionarlo ahora el mismo se marca con una doble comilla (""""), para indicarnos que este menú deriva o está contenido en el menú de cabecera "Archivo". Ahora pasamos a ingresarle el nombre y la leyenda del menú. En la propiedad Caption ingresamos &Abrir y en el campo Name : mnuabrir.
  3. Ahora repetimos los pasos anteriores para ingresar los submenues restantes del menú Archivo.
  4. Si habrás observado los clásicos menues de las aplicaciones, los submenues se agrupan en secciones. Por ejemplo en el menú archivo del internet explorer, el submenú Salir está separado del resto por una línea. para lograr esto se debe crear un submenú como cualquier otro justo arriba del menú que queremos que aparezca la línea divisoria, y en la propiedad caption del mismo le colocamos el caracter menos -
  5. Ahora ingresaremos el código para que muestre la leyenda en el control Label cada vez que presionemos un menú.
  6. Como habrás notado, el menú se va incorporando al formulario en tiempo de diseño como cualquier otro control de visual basic. Para ingresar el código necesario diremos que cada menú responde a un evento llamado click y que se dispara cuando presionamos el menú con el mouse o cuando le damos un enter, para ingresar el código en el menú "Abrir" le damos un click en el mismo menú desde la ventana de diseño. Una vez abierta la ventana de código aparecerá una rutina como la siguiente:

 

Private Sub mnuabrir_click()

End Sub

 

 

Ahora dentro del evento Click del menú colocamos lo siguiente para que la etiqueta muestre la propiedad caption del menu abrir al pulsar sobre el menú

 

Label1.Caption = mnuarchivo.Caption

 

Nota: cabe aclarar que estas rutinas las podemos invocar o llamar como cualquier otra rutina de código , por ejemplo en el caso anterior, por ejemplo si coloco esto en un botón se llamaría al procedimiento Click del menú y se ejecutaría el código.

Call mnuabrir_click

 

Esto es útil si tenemos una barra de herramientas, ya que no tendremos que escribir código 2 veces, y podemos usar un solo procedimiento haciendo una simple llamada al mismo

 


8 - Menues contextuales o popup menú

Los menues contextuales, esos que se despliegan cuando presionamos el botón derecho del mouse, son simples menues pero con la diferencia de que los mismos poseen la propiedad Visible en False, y luego se visualizan utilizando el método PopUpMenu

El método PopUpMenu , se encuentra disponible solo para los formularios.

Los parámetros de este método son los siguientes:

 

Nombreformulario.PopUpMenu "Elmenu", "flags", x , y, opcion

 

Si bien el menú PopUp lo podemos llamar en cualquier momento, lo mas común es utilizarlo y desplegarlo cuando el usuario presiona el botón derecho sobre un control, formulario etc...

Sabiendo esto , para desplegarlo por ejemplo cuando el usuario presiona el botón sobre un área del formulario, podemos utilizar el evento MouseUp o MouseDown del mismo y consultar la variable Button del procedimiento y mediante una estructura IF - Then comprobar si el botón que presionamos es el derecho , utilizando las constantes VbRightButton, vbLeftButton

 

9 - Ejemplo para crear un menú PopUp

Crear un menú llamado mnuContextual con la propiedad visible en False y pegar esta rutina en el formulario:

 

Private Sub form_mouseup(button As Integer, shift As Integer, x As Single, y As Single)


' Consultamos si el botón presionado es el derecho
If button = vbRightButton Then
    
    ' Depliega el menú PopUP
    Me.PopupMenu mnucontextual
End If

End Sub 

 

En el siguiente enlace hay 3 ejemplos con su código fuente que muestra como crear 2 menú y uno de estilo PopUp

 

Descargar ejempos sobre menú

 


 

10 - Enlaces relacionados - Menú

  1. Crear y eliminar menúes en forma dinámica
  2. Cargar un menú PopUp en forma dinámica con valores de una base de datos
  3. Control Ocx para utilizar Menues con estilo XP
  4. Otro componente para usar menu windows xp - Smart menu

 


Volver al menú del tutorial

 


Buscar en Recursos vb