[SRC][UC] ListViewEx 2.0 Reprogramado ( 05/01/2011 ) No Skiner

Iniciado por BlackZeroX, 5 Enero 2011, 11:09 AM

0 Miembros y 1 Visitante están viendo este tema.

BlackZeroX

.
Version Anterior Go To ListView 1.0

  • Este Control Esta Re-Programado al 100% ademas de que el codigo esta 100% mas legible que el anterior.
  • Iconos Independientes en cada Celda, o Columnas ( Alineacion Izquierda Derecha )
  • Agregado Multiseleccion Con Shift y Control
  • Agregado FullRowSelection
  • Los Iconos se Pueden reajustar sus dimensiones sin que se reasigne la Coleccion de imagenes
  • Las celdas que no contengan Icono asignado no tienen espaciado inensesario
  • Texto En Negrita de forma independiente apra cada celda/Header
  • Texto En Cursiva de forma independiente apra cada celda/Header
  • Texto En Sub-raya dode forma independiente apra cada celda/Header
  • Font Name exclusivo para los TODOS los Header
  • Font Name exclusivo Para TODAS las Filas
  • Tag Independiente apra cada Fila
  • Tag independiente para cada Header
  • Eventos Por Regiones ( Zona Header, Zona Filas )
  • Eventos Habituales y Comunes
  • ToolTip para cada Fila de forma independiente
  • ToolTip para cada Header de forma independiente
  • Texto En Negrita de forma independiente apra cada celda/Header
  • Texto Colorido para cada celda de forma Independiente
  • Texto Alineado para cada celda de forma Independiente ( Izquierda Derecha o Centrado )
  • Texto Colorido para cada Header de forma Independiente
  • Texto Alineado para cada Header de forma Independiente( Izquierda Derecha o Centrado )
  • A Cada header sele puede asignar un color de forma independiente
  • Color Independiente a la Seleccion de Filas
  • Depende Solo de la Clase Cls_Imagelist 2.0 o superior ( Viene incluida en la descarga )
  • Dezplazamiento de una Cantidad Dada de columnas a una posicion X
  • Dezplazamiento de una Cantidad Dada de filas a una posicion X







<Download>

Dulces Lunas!¡.
.
The Dark Shadow is my passion.

LeandroA

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.

BlackZeroX

#2
.
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!¡.
The Dark Shadow is my passion.