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)

Sep 012020
 

Se trata de una suite de user controls, para crear gráficos estadísticos. Son cuatro controles pero algunos poseen estilos diferentes, se podría decir que están los principales y más utilizados. Cada user control es independiente del otro, por lo que no requiere implementar toda la suite, por supuesto esto no lo hace más óptimo en reducción de código, pero es esa costumbre de no depender de nada, son muchas lineas de código y seguramente habrá más de algún bugs dando vuelta, por mi parte creo que hasta aquí llegaron mis ganas con esto, por supuesto que si alguien encuentra algún error o sugerencia se agradece informar para corregirlo.

En la descarga se encuentra un ejemplo de cada uno y un proyecto principal que abarca todos y algunos agregados para simular un Dashboard.

DashBoard.png
PieChart.png
DonutChart.png
BarChart1.png
BarChart2.png
AreaChart.png
TreeMaps.png
TreeMaps2.png