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:
|
'----------------------------------------------------------------- '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