Jul 072021
 

UserControl multi función el cual cumple con las funcionalidades de los controles ListBox, ComboBox, Lista Desplegable, Menú y Autocomplete de un TextBox. La novedad es que adiciona varios extras y cambios estéticos, como ser bordes redondeados, sombras, ítems personalizados, soporte para imágenes Png y estándares, a las imágenes se le puede aplicar esquinas redondeadas y cambios de colores para el caso de imágenes vectoriales (PNG), grupos de ítems, barras separadora, filtro y subtexto.

Para el caso del estilo ListBox los cambios de propiedades y adición de ítem no refrescan automáticamente, es necesario llamar a Update; esto es con la intención ganar la velocidad (aunque me quedó la duda si fue lo correcto haberlo hecho así)

Quizás hay muchas cosas que me gustaría aclarar pero por el momento sólo voy a dejar unos cuantos ejemplos donde podrán aprender a emplearlo fácilmente.

ucListPlus1.png ucListPlus2.png ucListPlus3.png ucListPlus4.png ucListPlus5.png

Actualizado: 05/08/2021 (corrección en algunas fallas de la sombra en ventanas padres)

  17 Responses to “ucListPlus”

  1. Hola Leandro.
    Excelentes controles y ejemplos, me estan sirviendo de mucho para algunas mejoras en algunas de mis aplicaciones.
    Muchisimas gracias.

  2. Hola Leandro, muy agradecido por los controles, solamente una recomendación seria por ejemplo al autocompletar el combo, «por ejemplo Abril» debería permitir escribir hasta donde haya los items y no ejemplo abrilllllllll.

    Leandro usted es un experto en controles, seria un favor enorme pedirle que si pudiera elaborar, un Flexgrid moderno incluido los themas de windows y otros como esto:

    https://www.grapecity.com/componentone/flexgrid-net-data-grid-control

    Actualmente lo que usamos como el mshFlexgrid y el Flexgrid son muy pobres en apariencia, propiedades y funciones. Si te animas seria de una enorme ayuda.

    Muchas Gracias

    • Hola, en cuanto al primer punto si es un textbox deberia permitir escribir cualquier cosa, o validar antes perder el foco, pero eso ya no es tarea del usercontrol, en caso que la entrada sea explicita en vez de usar un textbox habria que utilizar un combobox.

      En cuanto a lo de hacer un Flexgrid, es mucho mucho trabajo el cual no se si estaría dispuesto a arrancar. hacer algo a medida podria ser medianamente sensillo, pero hacer todo lo que un Flexgrid ocupa es sumamente complejo, drag & drop de columnas, alto de item personalizado, agrupar, selecion y cientos de cosas mas.

      • Hola Leandro, Gracias por la aclaración del textbox, lo del flexgrid si seria muy importante a hacerlo, vi uno en VbForums llamado VbFlexgrid, no se si eso se podría perfeccionar.

        Realmente muchas gracias Por los controles, nos es de gran ayuda.

  3. i cant find RTL properties for this control.how can set it to righttoleft for my persian language?

  4. i am waiting to u can publish new version or pls help mo to i add this important properties to this uclistplust.
    jst with two values.
    righttoleft and lefttoright.

  5. Hola Leandro,

    Estoy tratando de hacer un Drag & Drop del contenido de una celda en un VsGrid (el nombre de una persona) en un control ucList, siguiendo el ejemplo de una demo tuya pero no me funciona. Me muestra siempre el símbolo del mouse de prohibido, como si no lo reconociera.

    En realidad lo único que quisiera es poder arrastrar los nombres que me aparece en una rejilla en tu control ucList.

    ¿Es esto posible?

    Muchas gracias por tu ayuda.
    Luis

  6. Hola Luis el VsGrid tiene OLEDropMode = 1 sino cualquier cosa subi un ejemplo y pasa el link haber como se puede hacer.

  7. Hola Leandro. Finalmente lo resolví sin más problemas.

    Quisiera consultarte otra duda. Estoy creando dos listas de items que a su vez forman parte de grupos. La ida es poder hacer Drag & Drop (Mediante copy/paste) entre ambas listas pero comprobando antes que no haya elementos repetidos dentro de cada lista y su respectivo grupo.

    Dim i As Long

    With ucList6

    .ImageListInitialize 16, 16
    .UseMonocromeIcons = True
    .ItemHeight = 32

    .OpenGroup «Grupo 1», , 10000

    For i = 1 To 8
    .AddItem «Item » & i, , 10000 + i
    Next

    .Update

    End With

    ¿Existe alguna manera de asignar a cada item el grupo al que pertenece para poder luego recorrer la colección y consultar si ya existe?

    Creo que sería de una gran utilidad para este tipo de casos.

    Gracias por tu ayuda.

    • Hola Luis, si tienes razon, no digo de una coleccion porque ya quizas me entraria a complicar, pero al menos debería pode saber si un ítems es hijo o padre de esa forma mediante un bucle for puedo consultar si estoy dentro de un grupo y ver si hay algún repetido, dame unos días y lo voy a imprentar, son poquitas líneas.

  8. Muy buen ejemplo y muy útil Leandro. Pero estoy teniendo un inconveniente al querer crear un nuevo proyecto y agregar todo lo necesario para que funcione. Al agregar a un proyecto el control: ucList.ctl y también ucSelect.ctl me tira un error y no puedo usar el ucList en el proyecto.
    Los pasos que hago para tratar de agregar todo son:
    1- Crear nuevo proyecto exe estandar.
    2- Agregar componente: comdlg32.ocx
    3- Agregar las clases al proyecto: ClsShadow, clsSubClass, JsonBag
    4- Agregar los controles de usuario: ucList, ucScrollbar, ucSelect
    5- Crear nuevo formulario
    6- Al querer crear un nuevo ucList en el formulario tira el error en el Initialize en la linea:
    ucScrollbar1.ShowButtons = False

    Podrás darme una mano, desde ya muchas gracias.
    Saludos
    Hugo Fajardo

    • Hola Hugo Fajardo, te digo los pasos creas un proyecto nuevo, lo dejas con su nombre por defecto, si tienes el vb6 en ingles cambias el nombre del proyecto por Proyecto1, luego agregas en este orden estos controles y clases: primero que todo el ucScrollbar.ctl, luego el ucList.ctl luego si es que tienes pensado usarlo el ucSelect.ctl (este es el que es como un combobox) y luego las clases ClsShadow.cls y ClsShadow.cls, la JsonBag.cls no es necesaria ya que era solo parte del ejemplo en el uso de json. una ves agregados estos controles puedes renombrar tu proyecto a tu necesidad y guardar.
      estos pasos son un poco engorroso, mas adelante si dios quiere voy a intentar crear una suite de controles y empaquetarlos todos en un ocx asi queda todo encapsulado y no se hace tanto lio.

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)