Sep 282021
 

Un nuevo UserControl u ocx (para quienes quieran compilarlo), tal como su nombre lo indica es una Grilla. Si bien ya hay algunas dando vuelta y muy buenas por cierto, en este caso intenté buscarle un lado más moderno, nunca había utilzado este control así que me fui basando en las diferentes opciones que hay por la web, tanto las de vb6 (LynxGrid, IGrid, VBFlexGrid) como las de uso web por ejemplo ComponentOne y DevExpress. Este control me llevó mucho tiempo ya que son muchas líneas de código, como siempre no he realizado ningún archivo de ayuda, pero dentro de los ejemplos encontrarán algunos ejemplos muy funcionales en tiempo real. Al ser un control con muchas opciones seguramente se me habrán escapado muchas cosas, las cuales podré ir agregando o corrigiendo si me lo hacen saber, algo que no pude hacer en esta grilla fue implementar la funcionalidad MergedCell (celdas combinadas), pero el resto creo está casi todo.

Un problema que encontré tarde fue que por cuestiones estéticas utilicé otro use sercontrol «ucScrollBar» tal como ya lo había hecho en el ucList, pero no había notado que si se cambia el nombre del proyecto el ucScrollBar pierde la referencia y se convierte en un PictureBox, para que esto no pase es necesario abrir el ucGridPlus con el notepad y cambiar «Proyecto1» por el nombre del proyecto en que lo vayan a emplear, de momento no encontré una mejor solución.

El control puede cargar imágenes de muchas formas y formatos tanto ColImgListAddImage y HeaderImgListAddImage pueden cargar la imagen desde array de bits, archivo, url, url base64, hbitmap, hIcon y stream; las imágenes pueden tratarse como vectores donde podemos asignarle el color según el forecolor de la celda o podemos poner imágenes comunes, también cuenta con dar una propiedad «radio» para dar forma circular o con puntas redondeadas.

En el primer ejemplo encontrarán algunos gráficos, Progresos y ranking que se muestran en cada fila, en esos ejemplos utilicé un módulo externo para usar un CustomDraw, esto con el conocimiento adecuando se pueden hacer infinitas cosas. No es parte de la grilla en si, de este modo es más fácil para hacer cosas a necesidad de cada uno.

En el caso de los controles, es lo mismo, no son parte de la grilla, el ucGridPlus es un contendor, donde podemos poner Combobox, Datepiker entre otros y con algunas propiedades de este podemos ubicar dichos controles sobre la celda simulando que forman parte de ella.

La grilla cuenta con la posibilidad de agregar eventos a las imágenes y texto de la celda, de esta forma se pueden lograr algunos lindos efectos como verán en los ejemplos.

Es necesario tener instalada la fuente «Segoe MDL2 Assets» en windows 10 ya está por defecto, esta se utilizo para algunos iconos.

Para la vercion compilada (OCX) utilice el control de usuario UniTextBox para que acepte caracteres unicodes en modo de edición.

Para cerrar quiero aclarar que esto por momento es algo así como una beta y hasta que no se use y se encuentren errores no los podré detectar, sé que muchas cosas me quedaron en el tintero pero por ahora se me agotó la energía.

A continuación una tabla de propiedades, Rutinas y funciones del ucGridPlus

ucGridPlus0.png ucGridPlus2.png ucGridPlus3.png ucGridPlus5.png ucGridPlus6.png ucGridPlus9.png ucGridPlus11.png ucGridPlus12.png

A continuación una tabla de sus propiedades.

AllowColumnDrag ColLabelsEvents HeaderLinesVerticalWidth
AllowColumnSort ColLeft HeaderTextAlign
AllowEdit ColMinWidth InsertRow
AutoHeightAllRows ColMoveTo LastRowIsFooter
AutoHeightRow ColRef LinesHorizontalColor
AutoWidthAllColumns ColsCount LinesHorizontalWidth
AutoWidthColumn ColSort LinesVerticalColor
BackColor ColSortOrder LinesVerticalWidth
BackColorAlt ColTag ParentBackColor
BorderColor ColTextHidde Redraw
BorderRadius ColumnsAutoFit RowAlign
BorderVisible ColumnText RowBackColor
CellAlign ColUserResizeLocked RowChecked
CellBackColor ColWidth RowDelete
CellEditionLocked ColWordBreak RowFont
CellFont CurCol RowForeColor
CellForeColor CurRow RowHeight
CellImageIndex EnsureCellVisible RowHidden
CellStartEdit FillFromRS RowIdent
CellTag FixedColumns RowIsFullRow
CellValue FixedRows RowIsGroup
CellWordBreak Font RowMoveTo
CheckStyle GetCellRect RowRef
ChrW2 GetHotCell RowsBackColor
Clear GetSelectionRange RowsBackColorAlt
ColFont GetWindowsDPI RowsCount
ColForeColor GroupByColumn RowSelectorBkColor
ColFormat GroupColapse RowSelectorWidth
ColHeaderForeColor GroupExpand RowTag
ColHeaderImgIndex HeaderBackColor RowWordBreak
ColHidden HeaderFont ScrollBarStyle
ColImageListCount HeaderHeight SelectionColor
ColImagesEvents HeaderImageAlign SelectionMode
ColImgAlign HeaderImgListAddImage SetCurCell
ColImgListAddImage HeaderImgListClear SetMargin
ColImgListClear HeaderImgListCount SetSelectionRange
ColImgListHeight HeaderImgListHeight ShowHotRow
ColImgListRemoveImage HeaderImgListRemoveImage Sort
ColImgListWidth HeaderImgListWidth SwapCol
ColImgMonocrome HeaderInitImgList SwapRow
ColInitImgList HeaderLinesHorizontalWidth UnGroup

Descargar UserControl y Ejemplos

Descargar OCX


Historial de cambios

29/09/21 V:1.0.1
Solucionado ordenamiento de columna, solo se realizara con el botón izquierdo, no se ordenará cuando la columna es arrastrada.
Solucionado cuando se cambiaba el tamaña de una fila, el scrollbar no mostraba las ultimas filas.
Solucionado error al ordenar columna con la grilla no sin filas.

01/10/21 V:1.0.2 ‘Gracias Elihu!!
Solucionado Error visual si el valor del scroll era mayor al Máximo, también se agrego una llamada directa dentro del Scroll que causaba un un retardo a causa del timerVB
La selección ahora se puede realizar con el botón derecho, si se hace click derecho dentro del rango selecionado la selección no se pierde, especial para un PopUpMenu.
Se agrego parámetros ‘Button’, ‘Shift’ en los eventos CellClick, LabelMouseDown, LabelMouseUp, ImgMouseDown, ImgMouseUp
se agrego la propiedad BorderWidth y se quito la propiedad BorderVisible, también se corrigió un error en el color del borde.
Se añadió la propiedad ShowHotColumn (para resaltar las columna debajo del cursor)
En la versión OCX en el uniTextBox se corrigió detección de las flechas del teclado (NO IPAO)

11/10/2021 V:1.0.3
Se añadieron varios cambios y arreglos, no recuerdos todos
Se añadieron todas las propiedades y eventos referido a Drag & Drop
Se mejoro la lectura de imágenes para iconos y bitmaps de 32bits con canal alpha
Se mejoro la función AutoWidthColumn
Se añadieron las propiedades ColSort y ColSortOrder, para quienes tengan que ordenar las columnas por consultas SQL

15/11/2021 V:1.0.4
Cambios añadido por jpbro, comportamiento en el cuadro de texto al mover las flechas del teclado, y agregado evento BeforeEdit (Gracias)

  19 Responses to “GridPlus”

  1. Hola Leandro: Te animaste por el Grid. Excelente control, Muchas Gracias

  2. Muchas gracias por el aporte

  3. Hola Lea, creo que el vbFlexgrid tiene esa funcuionalidad de MergedCell, seria cuestion de revisarlo y adaptarlo al ucGridPlus.

  4. Thank you for this, and indeed for your whole blog. It’s truly an education.

  5. Muy bien, por favor agregue la función de arrastre, gracias

    Please Add Drag Row ?ThankS

  6. Sorry, I don’t understand, I think it’s wrongly translated

  7. wooooow Leandro you are creating miracles in vb6!!!!!
    In this control we can also use URL-s. Do you maybe know, if we have a folder on a webserver where we can store the images, how we can manipulate with this folder within vb6, like we do on local network with Common Dialog control?
    To save a file from our local folder to this webserver folder, something like Common Dialog control, but that works with folder on a webserver.

    Once again, great work and with every post you leave me speechless!

    Davor

  8. Hola, gracias, usted puede hacer un listado de los archivos en el servidor mediante php, luego las imagenes las puede levantar directamente con el control, generalmente suele utilizarse json para traer informacion de texto y url de imagenes, yo mediante un script de php estoy consultado las bases de datos con sql y el servidor me retorna un json con la consulta de la base de datos, ya con eso usted puede hacer muchas cosas.

    Hello, thank you, you can make a list of the files on the server using php, then the images can be raised directly with the control, usually json is used to bring text information and url of images, I am using a php script I consulted the databases with sql and the server returns a json with the database query, with that you can do many things.

  9. Hola Leandro. Llevo años trabajando con el Grid de ComponentOne y el Report de Codejock, pero tras probar el tuyo me ha sorprendido la gran facilidad de uso de tu control. Te felicito por el extraordinario trabajo que has hecho con este y con el resto de controles como Uclist y ucLabel.

    Sería de una gran ayuda que se pudiese llegar a incluir la opción de MergeCells en el Grid, así como el Drag & Drop de celdas con Merge. De esta manera se podría llegar a implementar una vista KanBan.

    Estaré muy atento a las mejoras que vayas publicando en tu web, por si en algún momento incorporas dichas mejoras.

    Muchas gracias por tu gran aportación a la comunidad.

    Luis

    • Hola Luis dudo que lo valla a implementar requeriría muchos cambios porque tendría que tener en cuenta muchas cosas (selecion, si las filas o columnas están fijas, si se elimina una celda etc etc) y ya por momento estoy en otra cosa, solo corregiré si aparece algún error para corregir. Es código abierto así que si alguien se anima puede tratar de implentarlo.

  10. hi,can i ask how can set this grid to RTL ( righttoleft) i cant find any properties for that,i find some properties like as righttoleft text for header or cell or col or row but its not worked good for righttoleft forms for example right to left positions of scroll bars or started columns from right to left and like these…

    this my question is about uclistplus and some of ur controls too,

    • sorry, I have not programmed it in any of the two controls (ucListPlus and ucGridPlus) neither has the RTL property, this is because our continent (America) is not used and I did not think that someone from another continent would use it this way, sorry for not taking that detail into account.

      • it ok but how can fix this problem or help me to i add RTL properties to this control.i cant use most ur user controls because of this big problem its not about my language or my countrie is useful for others too.

        It is strange that you observe property righttoleft for align cells or cols or rows but consider this important property

  11. i hv big prblme too i want send some question in contact form too but it shown error to me like this » Error sending message. Please try again later or contact the administrator by other means.»

    how can contact u.maybe i can ask by email.

  12. as i said before i am waiting to you can add this important properties RTL and LTR (right to left and left to right» data grid.thanks.

 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)