Ejemplo de Control ActiveX (gsImage.ocx)

 

La función de esta página es para que se instale en tu equipo.
Sólo funciona con Internet Explorer 3 o superior y Netscape con algún plug-in (creo).

Actualizado: 20/May/97
Revisado 8-Jul-97


Otra prueba (aunque realmente no es tan "prueba"), para poder usarlo con VB4.
Este control admite los formatos GIF y JPG. Se puede usar sin problemas con VB4 de 32 bits.

Bajate los listados del control y los ejemplos para VB4 y VB5 (cualquier edición) (gsImage.zip 26.1KB)


Este control no tiene prácticamente ningún misterio, casi lo único que hace es tomar el control Image que incorpora VB5 y al estar compilado como control ActiveX, puedes usarlo en tus proyectos de VB4 (32 bits)
De esta forma dispondrás de un control Image que puede cargar archivos del tipo GIF y JPG.

Si quieres obtener los listados del control, así como un form de prueba, pulsa en el link que hay arriba.
Este control puedes usarlo en cualquier VB de 32bits, para modificarlo sólo en VB5cce y demás versiones de pago.


Para ver los diferentes listados, pulsa en estos links:


El listado del control

'-----------------------------------------------------------------
'Control de Imagen, para usar con VB4                   (20/May/97)
'-----------------------------------------------------------------
Option Explicit
'Event Declarations:
Event Click() 'MappingInfo=Image1,Image1,-1,Click
Attribute Click.VB_Description = "Ocurre cuando el usuario presiona y libera un botón del mouse encima de un objeto."
Event DblClick() 'MappingInfo=Image1,Image1,-1,DblClick
Attribute DblClick.VB_Description = "Ocurre cuando el usuario presiona y suelta un botón del mouse y lo vuelve a presionar y soltar sobre un objeto."
Event KeyDown(KeyCode As Integer, Shift As Integer) 'MappingInfo=UserControl,UserControl,-1,KeyDown
Event KeyPress(KeyAscii As Integer) 'MappingInfo=UserControl,UserControl,-1,KeyPress
Event KeyUp(KeyCode As Integer, Shift As Integer) 'MappingInfo=UserControl,UserControl,-1,KeyUp
Event MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) 'MappingInfo=Image1,Image1,-1,MouseDown
Attribute MouseDown.VB_Description = "Ocurre cuando el usuario presiona el botón del mouse mientras un objeto tiene el enfoque."
Event MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) 'MappingInfo=Image1,Image1,-1,MouseMove
Attribute MouseMove.VB_Description = "Ocurre cuando el usuario mueve el mouse."
Event MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) 'MappingInfo=Image1,Image1,-1,MouseUp
Attribute MouseUp.VB_Description = "Ocurre cuando el usuario suelta el botón del mouse mientras un objeto tiene el enfoque."


' Cargar valores de propiedades desde el almacenamiento
Private Sub UserControl_ReadProperties(PropBag As PropertyBag)
    On Local Error Resume Next
    Image1.BorderStyle = PropBag.ReadProperty("BorderStyle", 0)
    Set Picture = PropBag.ReadProperty("Picture", Nothing)
    Image1.Enabled = PropBag.ReadProperty("Enabled", True)
    Image1.Stretch = PropBag.ReadProperty("Stretch", False)
    ToolTipText = PropBag.ReadProperty("ToolTipText", "")
    Err = 0
End Sub


Private Sub UserControl_Resize()
    Static YaEstoy As Boolean
    
    If YaEstoy Then Exit Sub
    YaEstoy = True
    With Image1
        If .Stretch = False Then
            Height = .Height
            Width = .Width
        Else
            .Height = Height
            .Width = Width
        End If
    End With
    YaEstoy = False
    'Image1.ToolTipText = Extender.ToolTipText
End Sub


' Escribir valores de propiedades en el almacenamiento
Private Sub UserControl_WriteProperties(PropBag As PropertyBag)
    On Local Error Resume Next
    Call PropBag.WriteProperty("BorderStyle", Image1.BorderStyle, 0)
    Call PropBag.WriteProperty("Picture", Picture, Nothing)
    Call PropBag.WriteProperty("Enabled", Image1.Enabled, True)
    Call PropBag.WriteProperty("Stretch", Image1.Stretch, False)
    Call PropBag.WriteProperty("ToolTipText", ToolTipText, "")
    Err = 0
End Sub


'¡ADVERTENCIA! NO QUITAR O MODIFICAR LAS SIGUIENTES LINEAS CON COMENTARIOS!
'MappingInfo=Image1,Image1,-1,Enabled
Public Property Get Enabled() As Boolean
Attribute Enabled.VB_Description = "Devuelve o establece un valor que determina si un objeto puede responder a eventos generados por el usuario."
    Enabled = Image1.Enabled
End Property


Public Property Let Enabled(ByVal New_Enabled As Boolean)
    Image1.Enabled() = New_Enabled
    PropertyChanged "Enabled"
End Property


'¡ADVERTENCIA! NO QUITAR O MODIFICAR LAS SIGUIENTES LINEAS CON COMENTARIOS!
'MappingInfo=Image1,Image1,-1,Picture
Public Property Get Picture() As Picture
Attribute Picture.VB_Description = "Devuelve o establece el gráfico que se mostrará en un control."
    Set Picture = Image1.Picture
End Property


Public Property Set Picture(ByVal New_Picture As Picture)
    Set Image1.Picture = New_Picture
    PropertyChanged "Picture"
    UserControl_Resize
End Property


Public Property Let Picture(ByVal New_Picture As Picture)
    Set Image1.Picture = New_Picture
    PropertyChanged "Picture"
    UserControl_Resize
End Property


'¡ADVERTENCIA! NO QUITAR O MODIFICAR LAS SIGUIENTES LINEAS CON COMENTARIOS!
'MappingInfo=Image1,Image1,-1,Appearance
Public Property Get Appearance() As Integer
Attribute Appearance.VB_Description = "Devuelve o establece si los objetos se dibujan en tiempo de ejecución con efectos 3D."
    Appearance = Image1.Appearance
End Property


'¡ADVERTENCIA! NO QUITAR O MODIFICAR LAS SIGUIENTES LINEAS CON COMENTARIOS!
'MappingInfo=Image1,Image1,-1,BorderStyle
Public Property Get BorderStyle() As Integer
Attribute BorderStyle.VB_Description = "Devuelve o establece el estilo del borde de un objeto."
    BorderStyle = Image1.BorderStyle
End Property


Public Property Let BorderStyle(ByVal New_BorderStyle As Integer)
    Image1.BorderStyle() = New_BorderStyle
    PropertyChanged "BorderStyle"
End Property


'¡ADVERTENCIA! NO QUITAR O MODIFICAR LAS SIGUIENTES LINEAS CON COMENTARIOS!
'MappingInfo=UserControl,UserControl,-1,Refresh
Public Sub Refresh()
Attribute Refresh.VB_Description = "Obliga a volver a dibujar un objeto."
    UserControl.Refresh
End Sub


Private Sub Image1_Click()
    RaiseEvent Click
End Sub


Private Sub Image1_DblClick()
    RaiseEvent DblClick
End Sub


Private Sub UserControl_KeyDown(KeyCode As Integer, Shift As Integer)
    RaiseEvent KeyDown(KeyCode, Shift)
End Sub


Private Sub UserControl_KeyPress(KeyAscii As Integer)
    RaiseEvent KeyPress(KeyAscii)
End Sub


Private Sub UserControl_KeyUp(KeyCode As Integer, Shift As Integer)
    RaiseEvent KeyUp(KeyCode, Shift)
End Sub


Private Sub Image1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    RaiseEvent MouseDown(Button, Shift, X, Y)
End Sub


Private Sub Image1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    RaiseEvent MouseMove(Button, Shift, X, Y)
End Sub


Private Sub Image1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
    RaiseEvent MouseUp(Button, Shift, X, Y)
End Sub


'¡ADVERTENCIA! NO QUITAR O MODIFICAR LAS SIGUIENTES LINEAS CON COMENTARIOS!
'MappingInfo=Image1,Image1,-1,Stretch
Public Property Get Stretch() As Boolean
Attribute Stretch.VB_Description = "Devuelve o establece un valor que determina si un gráfico cambia su tamaño para ajustarse al tamaño de un control Image."
    Stretch = Image1.Stretch
End Property


Public Property Let Stretch(ByVal New_Stretch As Boolean)
    Image1.Stretch = New_Stretch
    PropertyChanged "Stretch"
    UserControl_Resize
End Property


Public Property Get ToolTipText() As String
    ToolTipText = Image1.ToolTipText
End Property


Public Property Let ToolTipText(ByVal New_ToolTipText As String)
    Image1.ToolTipText = New_ToolTipText
    PropertyChanged "ToolTipText"
End Property

El listado del Form de Prueba Con un poco de Drag & Drop, para que no quede la cosa demasiado "sosa"
El form tiene un CommandButton y un CheckBox, además del control de marras.

'--------------------------------------------------------------
'Prueba para el control gsImage                     (20/May/97)
'Para VB5 y VB4
'--------------------------------------------------------------
Option Explicit

Dim sImg1$(1 To 2)
Dim iImg%
Dim x1&, y1&
Dim iDrag%


Private Sub Command1_Click()
    iImg = iImg + 1
    If iImg > 2 Then
        iImg = 1
    End If
    gsImage1.Picture = LoadPicture(sImg1(iImg))
End Sub


Private Sub Check1_Click()
    gsImage1.Stretch = Check1.Value
End Sub


Private Sub Form_DragDrop(Source As Control, X As Single, Y As Single)
    Source.Left = X - x1
    Source.Top = Y - y1
    Source.Drag vbEndDrag
End Sub


Private Sub Form_Load()
    iImg = 0
    'Pon aquí las imagenes que prefieras
    sImg1(1) = "ActiveXanim.gif"
    sImg1(2) = "D:\Webs\guiller\Imagenes\el_guille.jpg"
    Command1_Click
End Sub


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


Private Sub gsImage1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If Button = 1 Then
        x1 = X
        y1 = Y
        iDrag = True
        gsImage1.Drag
    End If
End Sub


Private Sub gsImage1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If Button = 1 Then
        '
    Else
        iDrag = False
        gsImage1.Drag vbCancel
    End If
End Sub


Private Sub gsImage1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
    iDrag = False
    gsImage1.Drag vbCancel
End Sub

En esta Revisión, lo que he hecho ha sido volver a comprobar el buen funcionamiento del control en VB4-32 bits y de camino le he añadido al form de prueba un par de cosillas más, por ejemplo poder abrir una nueva imagen y también poder guardar la imagen actual como BMP, que es el único formato que permite el VB con la orden SavePicture, al menos el único formato que funciona.
He añadido tres imagenes de muestra, para que puedas probar sin problemas, por eso el archivo ZIP es más grande de la cuenta. El control sigue siendo el mismo, no ha cambiado.
Recuerda que el VB no espera que se pueda añadir a un archivo de Imagen archivos del tipo GIF ni JPG, así que si desde el cuadro de propiedades vas a añadir alguna imagen, esta deberás seleccionarla con All Files (*.*).

Aquí tienes el listado de las nuevas "ordenes" y un link para el listado de ejemplo. (t4_gsImg.zip 33.1 KB)

'Esto hay que añadirlo/sustituir en las declaraciones del Form
Dim numImage As Integer
Dim sImg1$() 'Antes era Dim sImg1$(1 To 2)


'Un botón para examinar y abrir una nueva imagen
'
Private Sub cmdExaminar_Click()
    'Seleccionar una nueva imagen
    On Local Error Resume Next
    
    With CommonDialog1
        .Filter = "Imagenes (*.gif; *.jpg; *.bmp; *.wmf)|*.gif; *.jpg; *.bmp; *.wmf|Todos los archivos (*.*)|*.*"
        .filename = Text1
        .ShowOpen
        If Err = 0 Then
            Text1 = .filename
            numImage = numImage + 1
	    'Con Redim Preserve mantenemos en memoria los valores anteriores
            ReDim Preserve sImg1(numImage)
            sImg1(numImage) = Text1
            iImg = numImage
	    'La mostramos...
            gsImage1.Picture = LoadPicture(sImg1(iImg))
        End If
    End With
    Err = 0
    On Local Error GoTo 0
End Sub


'Este botoncito es el que nos permite guardar la imagen actual
'
Private Sub cmdGuardar_Click()
    'Guardar la imagen actual
    Dim bSalvar As Boolean
    
    On Local Error Resume Next
    
    With CommonDialog1
        .Filter = "BMP (*.bmp)|*.bmp|Todos los archivos (*.*)|*.*"
        .filename = Text1
        .ShowSave
        bSalvar = False
        If Err = 0 Then
            Text1 = .filename
            bSalvar = True
            If Len(Dir$(Text1.Text)) Then
                If MsgBox("Ese archivo ya existe, ¿lo quieres sobrescribir?", vbYesNo) = vbNo Then
                    bSalvar = False
                End If
            End If
            If bSalvar Then
                SavePicture gsImage1.Picture, Text1.Text
            End If
        End If
    End With
    Err = 0
    On Local Error GoTo 0
End Sub


'Así es como debe quedar el Command1_Click
'para que roten las imagenes añadidas
'
Private Sub Command1_Click()
    iImg = iImg + 1
    If iImg > numImage Then
        iImg = 1
    End If
    gsImage1.Picture = LoadPicture(sImg1(iImg))
    Text1 = sImg1(iImg)
End Sub


'Este es el nuevo Form_Load
'Las imagenes están en el archivo comprimido que se acompaña con esta nueva revisión
'
Private Sub Form_Load()
    numImage = 3
    ReDim sImg1(1 To numImage)
    iImg = 0
    sImg1(1) = "guille3.jpg"
    sImg1(2) = "ActiveXanim.gif"
    sImg1(3) = "el_guille.jpg"
    MostrarTip = 0
    Command1_Click
End Sub

ir al índice