Actualizado el 30/Jul/2003 (20-May-1997)
Contenido:
- Controles, Listados y Páginas de Ejemplo de controles ActiveX (antes OCX)
- Si quieres ver un extracto de lo que nos deparará el VB5, sigue este link.
- Creación de un control ActiveX (OCX) Paso a Paso
- Nuevo apartado HTML Layout Control, para crear páginas ALX (ActiveX)
- Otro control ActiveX más: gsSelDir.ocx (página explicativa) y la página de Prueba
- Control ActiveX: gsVerImagenes, La explicación (en esta página) y también la página de Prueba
- Control ActiveX: gsSelDirFile (página explicativa) y la página de Prueba
- Control ActiveX: gsImage (página de prueba, el código del control y ejemplos para VB4 y VB5)
- 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
- Ctl_Guil (ctl_Guil.zip)
- gsMarquee (gsMarque.zip)
- gsSpin (gsSpin.zip 16.2 KB)
- gsSelDir (página explicativa)
- gsVerImagenes (la explicación)
- gsSelDirFile (página explicativa)
- gsImage (gsImage.zip)
- Ctl_Guiller (Ctl_Guiller.htm)
- gsMarquee (gsMarquee.htm)
- gsSpin (gsSpin.htm)
- gsSelDir (gsSelDir.htm)
- gsVerImagenes (gsVerImagenes.htm)
- gsSelDirFile (gsSelDirFile.htm)
- gsImage (gsImage.htm)
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 SubAhora 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