Test Foro de elhacker.net SMF 2.1

Programación => .NET (C#, VB.NET, ASP) => Programación General => Programación Visual Basic => Mensaje iniciado por: BlackZeroX en 5 Enero 2011, 11:09 AM

Título: [SRC][UC] ListViewEx 2.0 Reprogramado ( 05/01/2011 ) No Skiner
Publicado por: BlackZeroX en 5 Enero 2011, 11:09 AM
.
Version Anterior Go To ListView 1.0  (http://infrangelux.hostei.com/?option=com_content&view=article&id=22:src-uc-listviewex&catid=13:controlesdeusuario&Itemid=21)


(http://img52.imageshack.us/img52/9856/00screenlistviewex20.png)

(http://img710.imageshack.us/img710/8695/02screenlistviewex20.png)

(http://img143.imageshack.us/img143/253/01screenlistviewex20.png)

<Download> (http://infrangelux.hostei.com/index.php?option=com_content&view=article&id=26:listviewex20&catid=13:controlesdeusuario&Itemid=21)

Dulces Lunas!¡.
.
Título: Re: [SRC][UC] ListViewEx 2.0 Reprogramado ( 05/01/2011 ) No Skiner
Publicado por: LeandroA en 7 Enero 2011, 03:52 AM
Muy bueno Black va tomando color, lo probe hay algunas sugerencias que he notado, que bueno seguramente ya las iras corrigiendo.

-la seleccion Hot deberia desaparecer cuando el muse sale del listview
-deberias poner el cursor (Size W E) cuando te posicionas sobre una columna para modificar su tamaño.
-Soporte para la rueda del Mouse. (aunque veo que aun no estas subclasificando)
-cuando se encuentra escaneando veo que se puede seleccionar donde no hay items, pero esto puede ser que no se refresca a tiempo
-cuando te moves con las flechas (Arriba , Abajo) la selección debería acompañar el ultimo o primer item según el caso.

hay algunas otras pero seguramente ya lo vas abras notado, yo creo que si seguís con este control un buen paso a seguir es implementar los scroll del sistema para no utilizar los controles de vb. son muy complicado este tipo de controles ya que hay muchas cosas a tener en cuenta, pero bueno dale para adelante y felicitaciones nuevamente.

Saludos.
Título: Re: [SRC][UC] ListViewEx 2.0 Reprogramado ( 05/01/2011 ) No Skiner
Publicado por: BlackZeroX en 7 Enero 2011, 07:48 AM
.
Gracias antes que nada.



-cuando se encuentra escaneando veo que se puede seleccionar donde no hay items, pero esto puede ser que no se refresca a tiempo



Lo que pasa es que se crea un Buffer ademas de que desactivo el la AututoActualziacion del Control es decir No se ven cambios. con este codigo lo veras mejor...

Aqui un ejemplo...

Código (vb) [Seleccionar]


Private Sub Command1_Click()
Dim lng_ri&
Dim lng_ci&
   With LVE_List
       Call .ClearAll '    //  Limpiamos TODO Filas y Columnas... Si es que existiesen con anterioridad!¡
       .BackColor = 5120
       
       '   //  Desactivar la Auto-Actualziacion del Control
       .RefreshAutomatic = False
       '   //  .ColumnAdd() Nos retorna el Index de la columna agregada
       '.ColumnCount = 3   '   //  Tambien se puede hacer Buffer de Columnas...
       .ColumnAlign(.ColumnAdd("Columna 1", 190, vbWhite, vbWhite)) = NumeroAleatorio(0, 2)
       .ColumnAlign(.ColumnAdd("Columna 1", 190, vbWhite, vbWhite)) = NumeroAleatorio(0, 2)
       .ColumnAlign(.ColumnAdd("Columna 1", 180, vbWhite, vbWhite)) = NumeroAleatorio(0, 2)
       
       '   //  Creamos un Buffer o mejor dicho creamos de golpe todas esas filas (SwapPtr() ayuda mucho par alos Strings).
       .RowCount = 32000          
       MsgBox "Buffer Creado, Se empesaran llenar " & .RowCount & " con " & .ColumnCount & " Columnas."
       For lng_ri& = 0 To .RowCount - 1
           For lng_ci& = 0 To .ColumnCount& - 1
               .RowSubItem(lng_ri&, lng_ci&, _
                           RGB(NumeroAleatorio(0, 255), NumeroAleatorio(0, 255), NumeroAleatorio(0, 255)), _
                           NumeroAleatorio(0, 2), _
                           CBool(NumeroAleatorio(0, 1)), _
                           CBool(NumeroAleatorio(0, 1)), _
                           CBool(NumeroAleatorio(0, 1))) = lng_ri& & " - " & lng_ci&
           Next lng_ci&
       Next lng_ri&
       '   //  activar la Auto-Actualziacion del Control
       .RefreshAutomatic = True    
       MsgBox "Finalizado"
   End With
End Sub
Public Function NumeroAleatorio(MinNum As Long, MaxNum As Long) As Long
Dim Tmp                                 As Long
   If MaxNum < MinNum Then: Tmp = MaxNum: MaxNum = MinNum: MinNum = Tmp
   Randomize: NumeroAleatorio = (MinNum - MaxNum) * Rnd + MaxNum
End Function



Nota:    LVEX.RowCount = N  tiene un Bug y se arregla sustituyendo por este codigo:

Código (Vb) [Seleccionar]


Public Property Let RowCount(ByVal vData As Long)
   With PCVars.Rows
       Dim i&, ii&
       If vData& > 0 And PCVars.Columns.Count& > 0 Then
           ReDim Preserve .Row(0 To vData& - 1)
           For i& = .Count To vData - 1
               ReDim Preserve .Row(i&).SubRows(0 To PCVars.Columns.Count& - 1)
               For ii& = 0 To PCVars.Columns.Count - 1
                   .Row(i&).SubRows(ii&).IconIndex = InvalidValueArray
               Next ii&
               .Count = i& + 1
           Next i&
           .Count = vData&
           If PCVars.System.AutoRefresh Then Call Refresh
       End If
   End With
End Property



Sin contar a RowText que hay me falto un SwapPtr()... pero no hay problemas con este ya que SwapPtr() solo lo uso para evitar las reasignaciones de memoria....

Dulces Lunas!¡.