Visual Basic Foro
Programación => Visual Basic 6 => Mensaje iniciado 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
-
pueba esta forma a ver
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..
-
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
-
Creo que no existe, la otra que te queda esformatearlo en el sql
-
Yo creo que si se puede y de hecho utilizando el mismo código que incluí al principio.
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..
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..
-
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
-
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.
-
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...
-
creo que eso existe solo en access no?
-
Que motor estas usando? Todo depende de eso y de sus funciones de tratamiento de strings
-
Si es MySQL podes usar asi:
Este para el separador de miles con "." "punto".
SELECT REPLACE(FORMAT(costo, 0),',','.') FROM ventas
Este para el separador de miles con "." "punto", pero con decimales.
SELECT REPLACE(FORMAT(costo, 2),',','.') FROM ventas
Este si queres usar el separador con la "," "coma"
SELECT FORMAT(costo, 0) FROM ventas
Pero te recomiendo que hagas desde el VB6 creo que es mas fácil y mas controlable.
Saludos...
-
¿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):
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.
-
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
-
¿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):
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
-
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.