Visual Basic Foro

Programación => Visual Basic 6 => Mensaje iniciado por: k_arlytos en Julio 18, 2012, 02:21:23 am

Título: Formato en MSHFlexgrid
Publicado por: k_arlytos en Julio 18, 2012, 02:21:23 am
Hay alguna forma de darle un formato especificado a cada columna de un control MSHFlexgrid

en datagrid si se puede hacer en modo de diseño
en MSHFlexgrid no tiene esa propiedad pero habra alguna forma? de darle un formato a una columna
Título: Re:Formato en MSHFlexgrid
Publicado por: Liudex en Julio 18, 2012, 11:56:31 am
pueba esta forma a ver

Código: [Seleccionar]

sub Conf_grid

    GrdDatos.Redraw = False
    GrdDatos.Cols = 5
    GrdDatos.TextArray(0) = "Reg"
    GrdDatos.TextArray(1) = "Cantidad"
    GrdDatos.TextArray(2) = "Concepto o Descripción"
    GrdDatos.TextArray(3) = "Precio"
    GrdDatos.TextArray(4) = "Total"
    GrdDatos.ColWidth(0) = 700
    GrdDatos.ColWidth(1) = 1200
    GrdDatos.ColWidth(2) = 9650
    GrdDatos.ColWidth(3) = 1500
    GrdDatos.ColWidth(4) = 1600
    GrdDatos.ColAlignment(0) = 1
    GrdDatos.ColAlignment(1) = 3
    GrdDatos.ColAlignment(2) = 2
    GrdDatos.ColAlignment(3) = 7
    GrdDatos.ColAlignment(4) = 7
    GrdDatos.ColAlignmentFixed(0) = 3
    GrdDatos.ColAlignmentFixed(1) = 3
    GrdDatos.ColAlignmentFixed(2) = 3
    GrdDatos.ColAlignmentFixed(3) = 4
    GrdDatos.ColAlignmentFixed(4) = 4
    GrdDatos.WordWrap = True
    GrdDatos.Redraw = True

,,, para dar fomato a una fila en especifico
For x = 1 To GrdDatos.Rows - 1
        GrdDatos.Col = 0
        GrdDatos.Row = x
        GrdDatos.CellFontSize = 14
        GrdDatos.CellForeColor = vbBlack
        GrdDatos.CellFontBold = True
        GrdDatos.ColAlignment(0) = 3
 Next



has tus adaptaciones a ver que tal sale..
Título: Re:Formato en MSHFlexgrid
Publicado por: k_arlytos en Julio 18, 2012, 02:51:16 pm
al formato que yo me referia es al de moneda con n decimales o el signo de soles
pero sin usar las funciones de vb6.0

algo parecido al de DATAGRID

le das propiedades y te sale que columna formatearle y que formato
existira algo parecido en mshflexgrid
Título: Re:Formato en MSHFlexgrid
Publicado por: YAcosta en Julio 18, 2012, 09:41:51 pm
Creo que no existe, la otra que te queda esformatearlo en el sql
Título: Re:Formato en MSHFlexgrid
Publicado por: Liudex en Julio 19, 2012, 11:41:33 am
Yo creo que si se puede y de hecho utilizando el mismo código que incluí al principio.

Código: [Seleccionar]

grid.Redraw = False
For x = 1 To grid.Rows - 1
        grid.RowHeight(x) = 500
        grid.Row = x
        grid.Col = 5
        '''tipo moneda
        grid.TextMatrix(grid.Row, 5) = FormatCurrency(grid.TextMatrix(grid.Row, 5))
        '''
        ''' con solo dos decimales
'        Grid.TextMatrix(Grid.Row, 5) = Format(Grid.TextMatrix(Grid.Row, 5), "##,##0.00")
        ''''
        grid.CellForeColor = &HC0&
        grid.CellFontSize = 12
        grid.CellFontBold = True
    Next
Grid.Redraw = True


Aunque de todas todas la mejor forma es hacerlo como dice el amigo Yvan, Formateando el campo que deseas en  la Consulta Sql, de hecho lo he utilizado de esa forma y sale excelente. pongo un ejemplo..

Código: [Seleccionar]

SELECT Campo1, Campo2, Campo3, Format(Totalg,'##,##0.00')as Total, " & _
"FormatCurrency(Precio)as Preciount  From Tabla  Where Condiciones Order by Campo desc "


... Prueba y nos comenta a ver que tal sale..
Título: Re:Formato en MSHFlexgrid
Publicado por: YAcosta en Julio 19, 2012, 12:34:53 pm
Claro Liudex, lo que K_arlitos quería era evitar recorrer el grid que es lo que hace tu código, el quería usar alguna propiedad del mismo control que lo haga, a eso me refería. Naturalmente la forma de formatear una columna de números es la que indicas.

Saludos
Título: Re:Formato en MSHFlexgrid
Publicado por: Liudex en Julio 19, 2012, 01:23:16 pm
Claro Liudex, lo que K_arlitos quería era evitar recorrer el grid que es lo que hace tu código, el quería usar alguna propiedad del mismo control que lo haga, a eso me refería. Naturalmente la forma de formatear una columna de números es la que indicas.


Ahh... lo que pasa es que no capte la idea inicial de nuestro amigo K_arlitos, si es no te queda otra que implementar cualquiera de las opciones que te hemos planteado por que tal como lo indica Yvan no hay ninguna opción predeterminada del control.
Título: Re:Formato en MSHFlexgrid
Publicado por: k_arlytos en Julio 19, 2012, 08:49:50 pm
No llegue a entender esto.

SELECT Campo1, Campo2, Campo3, Format(Totalg,'##,##0.00')as Total, " & _
"FormatCurrency(Precio)as Preciount  From Tabla  Where Condiciones Order by Campo desc "

esto existe en sql?

uhm...
Título: Re:Formato en MSHFlexgrid
Publicado por: k_arlytos en Julio 19, 2012, 09:10:18 pm
creo que eso existe solo en access no?
Título: Re:Formato en MSHFlexgrid
Publicado por: raul338 en Julio 19, 2012, 09:23:38 pm
Que motor estas usando? Todo depende de eso y de sus funciones de tratamiento de strings
Título: Re:Formato en MSHFlexgrid
Publicado por: E N T E R en Julio 19, 2012, 10:31:32 pm
Si es MySQL podes usar asi:


Este para el separador de miles con "." "punto".
Código: (SQL) [Seleccionar]
SELECT REPLACE(FORMAT(costo, 0),',','.') FROM ventas
Este para el separador de miles con "." "punto", pero con decimales.
Código: (SQL) [Seleccionar]
SELECT REPLACE(FORMAT(costo, 2),',','.') FROM ventas
Este si queres usar el separador con la "," "coma"
Código: (SQL) [Seleccionar]
SELECT FORMAT(costo, 0) FROM ventas
Pero te recomiendo que hagas desde el VB6 creo que es mas fácil y mas controlable.


Saludos...
Título: Re:Formato en MSHFlexgrid
Publicado por: Jeronimo en Julio 20, 2012, 07:20:32 am
¿Y no se puede dar el formato al momento de pasar el dato a la grilla?
Me refiero a esto (pongo el código de ejemplo de un ListView, ya que nunca usé el MSHFlexgrid y no sé cómo se hace):
Código: [Seleccionar]
Item.Subitems(1) = Format(Tabla!Campo, "$ #,###,###.#0") 'Aunque tenga estos separadores de miles y de decimales, dependerá de la configuración regional del sistema operativo la forma en que lo muestre (es decir, si conserva las comas para los miles y el punto para los decimales, o al revés)
Espero que te sirva.
Título: Re:Formato en MSHFlexgrid
Publicado por: raul338 en Julio 20, 2012, 10:37:42 am
Seria lo mismo pero con TextMatrix supongo, yo también estoy usándolo por primera vez y lo formateo desde MySQL, es mucho más rápido. Y si tenes que analizarlo para convertirlo a Double o Currency, quitas el $ y lo pasas con un CDbl o CCur  :P
Título: Re:Formato en MSHFlexgrid
Publicado por: YAcosta en Julio 20, 2012, 02:48:33 pm
¿Y no se puede dar el formato al momento de pasar el dato a la grilla?
Me refiero a esto (pongo el código de ejemplo de un ListView, ya que nunca usé el MSHFlexgrid y no sé cómo se hace):
Código: [Seleccionar]
Item.Subitems(1) = Format(Tabla!Campo, "$ #,###,###.#0") 'Aunque tenga estos separadores de miles y de decimales, dependerá de la configuración regional del sistema operativo la forma en que lo muestre (es decir, si conserva las comas para los miles y el punto para los decimales, o al revés)
Espero que te sirva.

Hola.
Yo por el contrario no trabajo con ListView (ja) y no se puede hacer en el MSHFlexgrid esa forma de formateo, realmente una cojudez por parte del control MSHFlexgrid porque si ya tiene la capacidad de conexión debería poder tener esas bondades que tiene el ListView o el DataGrid, tiene otras si pero formatear los datos pues no la hay.

Concluyendo k_arlytos tienes dos caminos a escoger:
1.- Formateas tu consulta SQL, la forma dependerá del motor que uses, si es firebird u otro usas Cast o Convert, si es Access usas simplemente Format que Access lo entiende. De los otros motores te lo dirán los compañeros pero indica el motor que usas.

2.- Llenas el grid y recorres linea a linea formateandolo como te convenga y listo. Yo uso algunas veces esta forma porque hay casos en los que si o si me veré obligado a recorrer el grid, a veces por tema de maquillaje como pintar la celda o poner en bold algunos registros o poner los numeros negativos en rojo que son muy efectivos para el usuario, en ese caso ya que igual usaré el For Next queda mejor aumentar una linea para formatear en ese loop y le quito el peso al motor.

Saludos
Título: Re:Formato en MSHFlexgrid
Publicado por: Jeronimo en Julio 20, 2012, 03:17:27 pm
Yo por el contrario no trabajo con ListView (ja) y no se puede hacer en el MSHFlexgrid esa forma de formateo, realmente una cojudez por parte del control MSHFlexgrid porque si ya tiene la capacidad de conexión debería poder tener esas bondades que tiene el ListView o el DataGrid, tiene otras si pero formatear los datos pues no la hay.
Muchas gracias por la aclaración, Yván.

...en ese caso ya que igual usaré el For Next queda mejor aumentar una linea para formatear en ese loop y le quito el peso al motor.
Es muy piola eso de aprovechar el For-Next para no cargar el motor.

Saludos.