Visual Basic Foro
Programación => Visual Basic 6 => Mensaje iniciado 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
-
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
Private Sub Form_Activate()
ReorderItem
ScrollControl.RefreshScroll
End Sub
y al ScrollControl ponele la propiedad AutoScroll = True
Saludos
-
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
-
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
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
-
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
-
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.