Controles ActiveX
Visual Basic 5, VB5cce y VB6

Actualizado el 30/Jul/2003 (20-May-1997)



Contenido:

  1. Controles, Listados y Páginas de Ejemplo de controles ActiveX (antes OCX)
  2. Si quieres ver un extracto de lo que nos deparará el VB5, sigue este link.
  3. Creación de un control ActiveX (OCX) Paso a Paso
  4. Nuevo apartado HTML Layout Control, para crear páginas ALX (ActiveX)
  5. Otro control ActiveX más: gsSelDir.ocx (página explicativa) y la página de Prueba
  6. Control ActiveX: gsVerImagenes, La explicación (en esta página) y también la página de Prueba
  7. Control ActiveX: gsSelDirFile (página explicativa) y la página de Prueba
  8. Control ActiveX: gsImage (página de prueba, el código del control y ejemplos para VB4 y VB5)
  9. Cómo instalar y configurar el Visual Basic 5.0 Control Creation Edition (VB5CCE) (20/Jul/2003)

Controles, Listados y Páginas de Ejemplo:

Aún no he hecho muchas cosas con VB5, pero como referencia, puedes ver los listados de los dos controles ActiveX que he creado, sé que no son nada del otro mundo, pero tenía que empezar con algo... 8-}

Los Listados Las Páginas de Ejemplo

Hay un artículo (en inglés) con un ejemplo de cómo crear una control ActiveX (OCX), en el que me basé para crear los controles, a ver si recuerdo donde está... (seguro que era por "donde" Microsoft...)

Pero con el "tutorial" sobre la Creación de un control ActiveX Paso a Paso que he creado, puedes aprender algo, ¡espero!


Sobre el gsVerImagenes.ocx

Este control lo he hecho para probar eso que dicen de que ahora los Image y Picture aceptan también imagenes GIF y JPG.
¡Y es cierto! Para probarlo, usa este control.
El problema, que sólo guarda en formato BMP. Pero... algo es algo.

Pulsa este link si quieres bajar los listados del control, para usar con el VB5 o el VB5 cce (gsverimg.zip 10.1 KB)

Ahora la explicación de las cosillas que he hecho en este control. ¡Había que aprovechar el viaje!
En primer lugar, si te fijas en el form de prueba, sólo con este control tienes todos los elementos para probar:
He incluido el botón Salir, para probar lo de los eventos y todo eso, este evento se produce al pulsar en ese botón y se puede controlar desde el form en el que está el control, (mira el listado para comprenderlo)

Bueno..., hoy no estoy muy inspirado, así que aquí tienes el listado del control y del form de prueba. La página de propiedades no la listo, porque no tiene ningún misterio. ¡A disfrutar que son dos días!

'-----------------------------------------------------------
'Prueba de Control para mostrar/guardar imagenes (12/Abr/97)
'
'(c)Guillermo Som, 1997
'-----------------------------------------------------------
Option Explicit

Dim iH As Integer
Dim iW As Integer

'Constantes para saber en que control estamos
Const esImg = 0
Const esPic = 1

'Los eventos de este control
Event Salir()
Event Examinar(ByVal sFile As String)
Event Guardar(ByVal sFile As String)


Private Sub cmdExaminar_Click(Index As Integer)
    'Examinar una archivo de imagen y asignarla al control
    Dim sFile As String

    On Local Error Resume Next

    'Los atributos de las extensiones ya están asignados
    sFile = "Image"
    If Index = 1 Then sFile = "Picture"
    CommonDialog1.DialogTitle = "Abrir una imagen en el control " & sFile

    CommonDialog1.filename = TxtPath(Index)
    CommonDialog1.ShowOpen
    sFile = Trim$(CommonDialog1.filename)
    If Err Or Len(sFile) = 0 Then
        Err = 0
    Else
        TxtPath(Index) = sFile
        If Index = 0 Then
            Image1.Picture = LoadPicture(sFile)
        Else
            Picture1.Picture = LoadPicture(sFile)
            'Picture1.Image = LoadPicture(sFile)
        End If
        'Producir el evento Examinar
        RaiseEvent Examinar(sFile)
    End If
    On Local Error GoTo 0
End Sub


Private Sub cmdGuardar_Click(Index As Integer)
    'Guardar la imagen como un archivo...
    Dim sFile As String

    On Local Error Resume Next

    'Los atributos de las extensiones ya están asignados
    sFile = "Image"
    If Index = 1 Then sFile = "Picture"
    CommonDialog1.DialogTitle = "Guardar la imagen del control " & sFile

    CommonDialog1.filename = TxtPath(Index)
    'Sólo se almacenará en formato BMP,
    'independientemente de la extensión que le demos.
    CommonDialog1.Filter = "Sólo BMP (*.bmp);*.bmp|Otro tipo pero el formato es BMP|*.*"
    CommonDialog1.ShowSave
    sFile = Trim$(CommonDialog1.filename)
    If Err Or Len(sFile) = 0 Then
        Err = 0
    Else
        TxtPath(Index) = sFile
        If Index = 0 Then
            'Se guardará en formato BMP
            SavePicture Image1.Picture, sFile
        Else
            'En cualquier caso se guarda con formato BMP
            'SavePicture Picture1.Image, sFile
            SavePicture Picture1.Picture, sFile
        End If
        'Producir el evento Guardar
        RaiseEvent Guardar(sFile)
    End If
    On Local Error GoTo 0
End Sub


Private Sub cmdSalir_Click()
    RaiseEvent Salir
End Sub


Private Sub UserControl_Initialize()
    'MsgBox "UserControl_Initialize"
    iH = ScaleHeight
    iW = ScaleWidth
    'TamanoInicial
End Sub


Private Sub UserControl_Resize()
    'Este es el único tamaño permitido
    If Width <> iW Then
        Width = iW
    End If
    If Height <> iH Then
        Height = iH
    End If
End Sub
'
'¡ADVERTENCIA! NO QUITAR O MODIFICAR LAS SIGUIENTES LINEAS CON COMENTARIOS!
'MappingInfo=TxtPath(1),TxtPath,1,Text
Public Property Get NombrePicture() As String
    NombrePicture = TxtPath(esPic).Text
End Property


Public Property Let NombrePicture(ByVal New_NombrePicture As String)
    TxtPath(esPic).Text() = New_NombrePicture
    PropertyChanged "NombrePicture"
    'Intentar cargar la imagen
    CargarImagen Picture1, New_NombrePicture
End Property


'¡ADVERTENCIA! NO QUITAR O MODIFICAR LAS SIGUIENTES LINEAS CON COMENTARIOS!
'MappingInfo=TxtPath(0),TxtPath,0,Text
Public Property Get NombreImage() As String
    NombreImage = TxtPath(esImg).Text
End Property


Public Property Let NombreImage(ByVal New_NombreImage As String)
    TxtPath(esImg).Text() = New_NombreImage
    PropertyChanged "NombreImage"
    'Intentar cargar la imagen
    CargarImagen Image1, New_NombreImage
End Property


' Cargar valores de propiedades desde el almacenamiento
Private Sub UserControl_ReadProperties(PropBag As PropertyBag)
    TxtPath(1).Text = PropBag.ReadProperty("NombrePicture", "D:\Webs\guiller\Imagenes\el_guille.jpg")
    TxtPath(0).Text = PropBag.ReadProperty("NombreImage", "D:\Webs\guiller\Imagenes\el_guille.jpg")
    '¿Asignar las imagenes?
    'No es necesario
End Sub


' Escribir valores de propiedades en el almacenamiento
Private Sub UserControl_WriteProperties(PropBag As PropertyBag)
    Call PropBag.WriteProperty("NombrePicture", TxtPath(1).Text, "D:\Webs\guiller\Imagenes\el_guille.jpg")
    Call PropBag.WriteProperty("NombreImage", TxtPath(0).Text, "D:\Webs\guiller\Imagenes\el_guille.jpg")
End Sub


Private Sub CargarImagen(queControl As Control, ByVal sFile As String)
    'Cargar la imagen especificada
    On Local Error Resume Next

    queControl.Picture = LoadPicture(sFile)
    If Err Then
        Err = 0
        queControl.Picture = LoadPicture()
    End If
    On Local Error GoTo 0
End Sub

Ahora el form de prueba: (simple, ¿verdad?)

'------------------------------------------------------
'Form de prueba para el control VerImagenes (12/Abr/97)
'
'(c)Guillermo Som, 1997
'------------------------------------------------------
Option Explicit


Private Sub Form_Load()

    With VerImagenes1
        'Ajustarlo al tamaño del control
        '
        'Esto es por si se quiere centrar el form
        'Width = 360 + .Width
        'Height = 480 + .Height
        '
        'Posicianarlo arriba a la izquierda
        Move 0, 0, 360 + .Width, 480 + .Height

        'Obligar a cargar las imagenes especificadas
        .NombreImage = .NombreImage
        .NombrePicture = .NombrePicture
    End With
    'Centrar el form
    'Move (Screen.Height - Height) / 2, (Screen.Width - Width) / 2
End Sub


Private Sub Form_Unload(Cancel As Integer)
    Set Form1 = Nothing
End Sub


Private Sub VerImagenes1_Examinar(ByVal sFile As String)
    'Este evento se produce cuando se abre una imagen
    Caption = "Examinado/abierto: " & sFile
End Sub


Private Sub VerImagenes1_Guardar(ByVal sFile As String)
    'Este evento se produce cuando se guarda una imagen
    Caption = "Guardado como " & sFile
End Sub


Private Sub VerImagenes1_Salir()
    'Si se produce este evento, es que se ha pulsado Salir.
    Unload Me
    End
End Sub

ir al índice