ProgramasVb6
  Frame
 

Descripción

El Frame es un control que se utiliza como contenedor de otros controles, de esta manera los podemos agrupar.

Por ejemplo como muestra la siguiente imagen:

Vista previa de un control Frame de Visual Basic

 

Para colocar controles dentro de un Frame, lo que debemos hacer es seleccionar del cuadro de controles de visual basic el que queramos, y dibujarlo dentro del mismo. Automáticamente este quedará dentro del frame

Para asegurarnos que realmente lo está, podemos desplazarlo hasta el límite del Frame y ver que el control desaparece, para que se entienda mejor mirar la siguiente imagen:

Vista previa de un FRame como contenedor

 

Podemos ver que el Command1 si lo corremos al limite derecho del Frame este desaparece, si no ocurriera esto el control no estaría dentro del mismo.

Otra forma de colocar los controles dentro de un Frame es, por ejemplo si tenemos 5 controles en un formulario y los quisiéramos colocar dentro, los seleccionaríamos haciendo Click izquierdo y manteniendo presionada la tecla Ctrl. Una vez que están todos seleccionados, desplegamos el menú Edición, seleccionamos Cortar, luego seleccionamos el control Frame y elegimos la opción Pegar.


Propiedades

 

Propiedad Caption:

Caption es la propiedad por defecto del control Frame y lo que hace es mostrar un texto a modo de título en la parte superior para el marco.

Para asignar el texto lo podemos hacer desde la ventana de propiedades de vb y seleccionar dicha propiedad, o si la establecemos mediante código en tiempo de ejecución lo haríamos así

  1. Option Explicit  
  2.   
  3. Private Sub Command1_Click()  
  4.     ' -- Cambiar el caption  
  5.     Frame1.Caption = "Texto del Frame"  
  6. End Sub  

 

 

Propiedad BorderStyle

Esta propiedad que posee el valor 0 y 1, indica si el Frame tendrá o no un borde. La siguiente imagen muestra en la izquierda un Frame con el BorderStyle en 0 mientras que a la derecha un Frame con el BorderStyle en 1

 

Vista previa de un control Frame con la propiedad BorderStyle

Una cosa importante es que si le quitamos el borde al control, el caption o texto del Frame no se visualizará.

Otras propiedades comunes

  • Font : permite establecer el tipo de fuente : Negrita, subrayado, el tamaño, cursiva, tachado, etc .., y la propiedad
  • ForeColor: permite establecer el color de la fuente.
  • BackColor : el color de fondo del objeto
  • Enabled : Determina si está habilitado o no el Frame.
  • Height y Width : Determina el alto y ancho del control respectivamente.
  • Left y Top: Determina la posición izquierda y superior en el contenedor, por lo general en el formulario, aun que puede ser cualquier otro que actué como contenedor de controles, como es el caso de un PictureBox.
  • Visible : Devuelve y establece si el Frame se encuentra o no visible.

 


Ejemplos varios

 

Recorrer todos los Frame de un formulario

Si en algún momento es necesario poder averiguar todos los controles Frame que se encuentran en el formulario actual, por ejemplo para cambiarle alguna propiedad, es posible utilizar un bucle For Each y mediante el operador TypeOf de Visual basic, comprobar el tipo de objeto. Ejemplo

Lo siguiente es un simple ejemplo que recorre todos los controles del formulario, y dentro del bucle se verifica la clase de control. Si el control es un Frame, entonces le cambia la propieda Enabled a True o False dependiendo del valor del CheckBox, y también le cambia la propiedad Enabled a los controles que se encuentren dentro de los Frames

Colocar un CheckBox en el formulario, algunos frames por ejemplo, y dentro de los frames algunos controles

Código fuente en el formulario

  1. Option Explicit  
  2.   
  3. ' -- Caja de verificación para habilitar y deshabilitar  
  4. Private Sub Check1_Click()  
  5.     Call EnabledDisabledFrames(Abs(Check1.Value))  
  6. End Sub  
  7.   
  8. ' -- Sub para cambiar el Enabled y el forecolor de los frames.  
  9. ' ----------------------------------------------------------------------------------  
  10. Private Sub EnabledDisabledFrames(ByVal bValue As Boolean)  
  11.   
  12.     Dim xControl As Control  
  13.     ' -- recorrer la colección de controles del formulario  
  14.     For Each xControl In Me.Controls  
  15.         ' -- Comprobar el tipo de control con TypeOf  
  16.         If TypeOf xControl Is Frame Then  
  17.            xControl.Enabled = bValue ' - - Habilitar o deshabilitar  
  18.         End If  
  19.         ' -- Desactivar controlador de error por si el control  
  20.         ' -- no posee la propiedad Container, como por ejemplo los Line, Shape etc ..  
  21.         On Error Resume Next  
  22.         ' -- Si el control x está dentro del frame, entonces ...  
  23.         If TypeOf xControl.Container Is Frame Then  
  24.            xControl.Enabled = bValue ' -- Activar o desactivar  
  25.         End If  
  26.         On Error GoTo 0  
  27.     Next  
  28.       
  29. End Sub  
  30.   
  31. Private Sub Form_Load()  
  32.     With Check1  
  33.         .Caption = "Habilitar / Deshabilitar Frames"  
  34.         .Value = 1  
  35.     End With  
  36. End Sub  

 

 


Ajustar el control a las dimensiones del formulario

Lo siguiente , al maximizar o cambiar las dimensiones de la ventana, se ajusta el tamaño del frame modificando el ancho y alto del control.

Colocar un Frame y un Botón de comando

  1. Option Explicit  
  2.   
  3.   
  4. Private Sub Form_Resize()  
  5.           
  6.     Dim lFrameHeight As Long  
  7.       
  8.     lFrameHeight = Me.ScaleHeight - 100 - Command1.Height  
  9.       
  10.     ' -- Para evitar errores en valores negativos  
  11.     If lFrameHeight < 0 Then lFrameHeight = 0  
  12.       
  13.     ' -- Posicionar y ajustar Frame  
  14.     With Frame1  
  15.         .Move 50, 10, Me.ScaleWidth - 75, lFrameHeight  
  16.     End With  
  17.       
  18.     ' -- Posicionar y ajustar el botón en la parte inferior derecha de la ventana  
  19.     With Command1  
  20.         .Top = Frame1.Top + Frame1.Height + 50  
  21.         .Left = Frame1.Left + Frame1.Width - .Width  
  22.     End With  
  23.       
  24. End Sub  
  25.   
  26.   
  27. Private Sub Command1_Click()  
  28.     Unload Me  
  29. End Sub  
  30.   
  31. Private Sub Form_Load()  
  32.     Command1.Caption = "Salir .."  
  33. End Sub  

 

 


Crear Frame en tiempo de ejecución

Este código , crea un control en tiempo de ejecución utilizando el método Add de la colección Controls de los formularios, y declara una variable de tipo "Frame" con la palabra reservada Withevents de Visual basic para poder acceder a los eventos del mismo, como cualquier otro Frame, es decir los eventos clic, DobleClic, etc ..

Código fuente en el formulario principal:

  1. Option Explicit  
  2.   
  3. ' -- Variable con evento para crear el objeto / control  
  4. Private WithEvents mFrame As Frame  
  5.   
  6. Private Sub Form_Load()  
  7.     ' -- Crear Frame con Controls.Add y asignarlo a mFrame  
  8.     Set mFrame = Me.Controls.Add("vb.Frame""NombreDelFrame")  
  9.       
  10.     ' -- Establecerle propiedades  
  11.     With mFrame  
  12.         ' -- Posicionarlo y establecer dimensión  
  13.         .Move 500, 500, Me.ScaleWidth - 1000, Me.ScaleHeight - 1000  
  14.         ' -- Otras  
  15.         .Caption = "Frame creado en tiempo de ejecución"  
  16.         .Font.Size = 10  
  17.         .Font.Bold = True  
  18.         .Visible = True ' -- Hacerlo visible  
  19.     End With  
  20.       
  21. End Sub  
  22.   
  23. '  -- Evento  
  24. Private Sub mFrame_Click()  
  25.     MsgBox "Clic en el Frame", vbInformation  
  26. End Sub  
  27.   
  28. '  -- Eliminar control y variable de referencia cuando ya no se utilice  
  29. Private Sub Form_Unload(Cancel As Integer)  
  30.     Me.Controls.Remove "NombreDelFrame"  
  31.     Set mFrame = Nothing  
  32. End Sub  

 

 
  ProgramasVb Copyright. 2011-2012 All Right Reserved  
 
Este sitio web fue creado de forma gratuita con PaginaWebGratis.es. ¿Quieres también tu sitio web propio?
Registrarse gratis