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.
Aquí puedes ver la Documentación del control
A continuación una tabla de sus propiedades.
AllowColumnDrag | ColImagesEvents | GetHotCell | RowAlign |
AllowColumnSort | ColImgAlign | GetSelectionRange | RowBackColor |
AllowEdit | ColImgListAddImage | GetTopRow | RowChecked |
AutoHeightAllRows | ColImgListClear | GetVisibleRows | RowDelete |
AutoHeightRow | ColImgListHeight | GetWindowsDPI | RowFont |
AutoWidthAllColumns | ColImgListRemoveImage | GradientStyle | RowForeColor |
AutoWidthColumn | ColImgListWidth | GroupByColumn | RowHeight |
BackColor | ColImgMonocrome | GroupColapse | RowHidden |
BackColorAlt | ColInitImgList | GroupExpand | RowIdent |
BorderColor | ColLabelsEvents | HeaderBackColor | RowIsFullRow |
BorderRadius | ColLeft | HeaderFont | RowIsGroup |
BorderVisible | ColMinWidth | HeaderHeight | RowMoveTo |
CellAlign | ColMoveTo | HeaderImageAlign | RowRef |
CellBackColor | ColRef | HeaderImgListAddImage | RowsBackColor |
CellEditionLocked | ColsCount | HeaderImgListClear | RowsBackColorAlt |
CellFont | ColSort | HeaderImgListCount | RowsCount |
CellForeColor | ColSortOrder | HeaderImgListHeight | RowSelectorBkColor |
CellImageIndex | ColTag | HeaderImgListRemoveImage | RowSelectorWidth |
CellStartEdit | ColTextHidde | HeaderImgListWidth | RowTag |
CellTag | ColumnsAutoFit | HeaderInitImgList | RowWordBreak |
CellValue | ColumnText | HeaderLinesHorizontalWidth | ScrollBarStyle |
CellWordBreak | ColUserResizeLocked | HeaderLinesVerticalWidth | SelectionColor |
CheckStyle | ColWidth | HeaderTextAlign | SelectionMode |
ChrW2 | ColWordBreak | HeaderTextWordBreak | SetCurCell |
Clear | CurCol | InsertRow | SetMargin |
ColFont | CurRow | LastRowIsFooter | SetSelectionRange |
ColForeColor | EnsureCellVisible | LinesHorizontalColor | ShowHotRow |
ColFormat | FillFromRS | LinesHorizontalWidth | ShowHotRow |
ColHeaderForeColor | FixedColumns | LinesVerticalColor | Sort |
ColHeaderImgIndex | FixedRows | LinesVerticalWidth | SwapCol |
ColHidden | Font | ParentBackColor | SwapRow |
ColImageListCount | GetCellRect | Redraw | UnGroup |
Gracias Yvan por el aporte
Descargar UserControl y Ejemplos (Actualizado 08/11/2022)
Descargar OCX (Actualizado 21/01/2022)
Historial de cambios
Continue reading »