Visual Basic Foro

Programación => Visual Basic 6 => Mensaje iniciado por: k_arlytos en Agosto 16, 2013, 04:47:06 am

Título: Facebook_Photo_Uploader - leandro
Publicado por: k_arlytos en Agosto 16, 2013, 04:47:06 am
Buenas estoy usando el control de leandro "ucItem"

pero cuando trato de llenarlo desde otro formulario no me pinta nada
y cuando agrego un item recien me pinta el resto.....

aqui dejo adjunto el ejemplo a ver si alguien lo puede solucionar gracias :)

http://www.mediafire.com/download/5buya9g79q42h2q/Presentacion.rar

Título: Re:Facebook_Photo_Uploader - leandro
Publicado por: LeandroA en Agosto 17, 2013, 08:36:25 pm
Hola K_arlytos, como primero te aviso no es un control para cargar muchos items, ya que consumiria mucha memoria, pero si son menos de 100 no tendrías problemas.

el problema esta que llamas el formulario en vbmodal, y no podes hacer las llamadas para reordenar los items y refrescar el scroll entonces hace lo siguiente

dentro del formulario frm_SeleccionarProducto pone esto

Código: [Seleccionar]
Private Sub Form_Activate()
    ReorderItem
    ScrollControl.RefreshScroll
End Sub

y al ScrollControl ponele la propiedad AutoScroll = True

Saludos
Título: Re:Facebook_Photo_Uploader - leandro
Publicado por: k_arlytos en Agosto 17, 2013, 09:06:08 pm
SI TIENES RAZÓN CUANDO ES MAYOR A 100 SALE ERROR DE MEMORIA
Y QUE SUGIERES PARA EVITAR ESTO?

SE PUEDE MODIFICAR ALGO PARA QUE OCUPE MAS ITEM?

TE DEJO UN ENLACE NO SE PORQ CUANDO CARGO ME DALE DESCUADRADO..
ME SALEN DOS SCROLLBAR UNO HORIZONTAL Y VERTICAL
NO PUDE SOLUCIONARLO, PERO TE DEJO EL LINK PARA QUE LO CHEKES PORFA
http://www.mediafire.com/download/qq04fybybv9tyn0/Presentacion2_.rar
Título: Re:Facebook_Photo_Uploader - leandro
Publicado por: LeandroA en Agosto 18, 2013, 02:33:47 am
Lo que pasa es que yo lo hice a mi necesidad, no era para cargar muchos items, te explico el porque ocupa mucha memoria, vos estas creando controles, estos controles a su ves tienen mas subcontroles, entonces si cargas 100 items son aproximadamente unos 700 controles (una guazada) y como se hace esto entonces?, para eso hay que hacer algo como un listview, eso seria repintando la ventana, la posición del scroll es en base a la cantidad de items (todo esto usando metodos graficos), entonces cada vez que scroleas, se repinta la ventana con solo la información que se puede mostrar, y todo esto solo utilizando un control. muchos lo que hacen es utilizar el listview, y usar un repintado personalizado o bien podes crear un control como te mencione pero lleva su tiempo y conocimiento.

en fin si de todas formas te sirve, para solucionar el problema del scroll que mencionaste, este seria el codigo para el frm_SeleccionarProducto

Código: (vb) [Seleccionar]
Option Explicit

Private Sub Btn_Agregar_Click()

        ScrollControl.ResetScroll
             AddItem "00", "abre", "descr", 5, "KL", "UM01", "RUTA"
       
        ReorderItem
        ScrollControl.RefreshScroll
End Sub

Public Sub AddItem(ByVal ID As String, ByVal Abreviatura As String, _
                    ByVal Descripcion As String, ByVal Cantidad As Long, _
                    ByVal UnidadMedida As String, ByVal UnidadMedidaID As String, ByVal sPath As String)


        Dim i As Long
        If Len(oItem(0).ID) Then
            i = oItem.Count
            Load oItem(i)
        End If

        With oItem(i)
            .ID = ID
            .Abreviatura = Abreviatura
            .Descripcion = Descripcion
            .Cantidad = Cantidad
            .UnidadMedida = UnidadMedida
            .UnidadMedidaID = UnidadMedidaID
            .PicturePath = sPath
            .Visible = True
        End With

End Sub

Public Sub ReorderItem()
    Dim i As Long, lTop As Long
    For i = 0 To oItem.Count - 1
        If oItem(i).Visible Then
            oItem(i).Top = lTop
            lTop = lTop + oItem(i).Height
        End If
    Next
End Sub

Private Sub Form_Activate()
    ScrollControl.ResetScroll
    ReorderItem

    ScrollControl_Resize
    ScrollControl.RefreshScroll
   
    If ScrollControl.IsVerticalVisible Then
        ScrollControl_Resize
        ScrollControl.RefreshScroll
    End If
End Sub

Private Sub Form_Load()
    ScrollControl.AutoScroll = True
    ScrollControl.ScrollWheel = oItem(0).Height / Screen.TwipsPerPixelY
End Sub


Private Sub oItem_RemoveItem(Index As Integer)
    oItem(Index).Visible = False
    ScrollControl.ResetScroll
    ReorderItem
    ScrollControl.RefreshScroll
End Sub

Private Sub ScrollControl_Resize()
    Dim i As Long
    For i = 0 To oItem.Count - 1
        oItem(i).Width = (ScrollControl.ScaleWidth) * Screen.TwipsPerPixelX
    Next
End Sub


Título: Re:Facebook_Photo_Uploader - leandro
Publicado por: k_arlytos en Agosto 18, 2013, 04:21:39 am
GRACIAS LEANDRO YA ESTA CORRIENDO BIEN

PERO QUE PENA QUE SOLO AGUANTE HASTA MENOS DE 100  SERIA UN CONTROL MUY INTERESANTE
UNA OPCIÓN PARA NO USAR UN DATAGRID U OTROS CONTROLES CONTENEDORES

Título: Re:Facebook_Photo_Uploader - leandro
Publicado por: E N T E R en Agosto 19, 2013, 11:33:01 am
La verdad esta muy bueno el control yo intente cargarle tambien unos registros pero se volvio lento. Que bueno seria tener un control como este que hizo leandro
http://leandroascierto.com/blog/buscar-imagenes-en-la-web/ (http://leandroascierto.com/blog/buscar-imagenes-en-la-web/)

Pero que tenga unas propiedades como este

(http://snag.gy/Dfbhn.jpg)

Ahi podes ver tiene como

Titulo        : Producto 0
SubTitulo  : Helados
Cantidad  : 18

pero que tenga la apariencia como hizo el amigo leandro.