Página 2 de 2
Re: Avanzando con TBrowseMod
Publicado: Lun Feb 08, 2021 4:10 pm
por ignacio
Desde el IDE?
Gracias
Re: Avanzando con TBrowseMod
Publicado: Lun Feb 08, 2021 4:26 pm
por ignacio
gabo1 escribió: ↑Vie Feb 05, 2021 9:10 pm
Duda
Como puedo cambiar el Font de las columnas??
Saludos
El anterior Browse tenía la posibilidad de establecer un font por cada columna. No obstante, era muy poco útil, porque no suele ser habitual que todos los elementos de una columna se pinten con un font distinto. Lo normal es que se cambie el font cuando se produce alguna condición en los datos que se muestran. Por dicho motivo y en aras a no consumir recursos innecesariamente, decidí no incluir la propiedad oFont en las columnas.
La forma más sencilla de cambiar el font de una columna es utilizando el evento OnDrawCell() que recibe como penúltimo parametro el hDC con el cual vamos a poder cambiar el font que está seleccionado. Pasos:
1) Cree un componente de forma manual en el formulario:
Código: Seleccionar todo
CLASS TForm1 FROM TForm
component oFontBold AS TFont
.....
2) Cree el font en el evento OnInitialize:
Código: Seleccionar todo
METHOD FormInitialize( oSender ) CLASS TForm1
::oFontBold := ::oFont:Clone()
::oFontBold:lBold := .T.
3) En el evento TBrowseMod:OnDrawCell cambie el font cuando sea necesario:
Código: Seleccionar todo
SelectObject( hDC, ::oFont:Handle ) // selecciona font por defecto
with object oCol
if :nDataCol == 5 .AND. xValue > 0
cValue := :aEditListText[ xValue ]
if cValue != "uno"
SelectObject( hDC, ::oFontBold:Handle ) // cambio el font en casos especificos
ENDIF
endif
end with
4) Es buena práctica destruir el font al salir:
Código: Seleccionar todo
METHOD FormDestroy( oSender ) CLASS TForm1
::oFontBold:End()
RETURN Nil
Saludos
Re: Avanzando con TBrowseMod
Publicado: Mié Feb 10, 2021 4:20 pm
por gabo1
Ignacio, gracias por responder..
El propósito de cambiar el font, en mi aplicación uso regularmente fuentes grandes 12 a 18px, pero el titulo del browse con fuentes grandes se pierden por que no caben, ese el motivo (y estéticamente también pierde vista).
Quizás si sea posible si así usted lo considera viable poder cambiar la fuente del titulo del browse.
Saludos!
Re: Avanzando con TBrowseMod
Publicado: Jue Feb 11, 2021 11:12 am
por ignacio
gabo1 escribió: ↑Mié Feb 10, 2021 4:20 pm
Ignacio, gracias por responder..
El propósito de cambiar el font, en mi aplicación uso regularmente fuentes grandes 12 a 18px, pero el titulo del browse con fuentes grandes se pierden por que no caben, ese el motivo (y estéticamente también pierde vista).
Quizás si sea posible si así usted lo considera viable poder cambiar la fuente del titulo del browse.
Saludos!
No le entiendo. En el browse no existe ningún título como tal. No sé a que se refiere. Lo siento
Saludos
Re: Avanzando con TBrowseMod
Publicado: Jue Feb 11, 2021 4:27 pm
por gabo1
Ignacio,
Tiene usted razón no hay ningún titulo en el browsemod, pero me refiero a los Headers de cada columna
Saludos!
.
Re: Avanzando con TBrowseMod
Publicado: Jue Feb 11, 2021 4:36 pm
por ignacio
gabo1 escribió: ↑Jue Feb 11, 2021 4:27 pm
Ignacio,
Tiene usted razón no hay ningún titulo en el browsemod, pero me refiero a los Headers de cada columna
Saludos!
.
Exactamente igual, pero con otro evento:
Código: Seleccionar todo
METHOD BrowseMod1DrawHeader( oSender, oItem, cText, nImage, nClrText, nClrPane, hDC, aRect ) CLASS TForm1
REDECLARE oItem as THeaderItemMod
SelectObject( hDC, ::oFont:Handle )
with object oItem
if :cHeader == "Street"
SelectObject( hDC, ::oFontBold:Handle )
endif
end with
RETURN Nil
Saludos
Re: Avanzando con TBrowseMod
Publicado: Vie Feb 12, 2021 4:29 pm
por MarceloAR
ignacio escribió: ↑Jue Feb 11, 2021 4:36 pm
gabo1 escribió: ↑Jue Feb 11, 2021 4:27 pm
Ignacio,
Tiene usted razón no hay ningún titulo en el browsemod, pero me refiero a los Headers de cada columna
Saludos!
.
Exactamente igual, pero con otro evento:
Código: Seleccionar todo
METHOD BrowseMod1DrawHeader( oSender, oItem, cText, nImage, nClrText, nClrPane, hDC, aRect ) CLASS TForm1
REDECLARE oItem as THeaderItemMod
SelectObject( hDC, ::oFont:Handle )
with object oItem
if :cHeader == "Street"
SelectObject( hDC, ::oFontBold:Handle )
endif
end with
RETURN Nil
Saludos
Buenas tardes, lo he probado y va bien, de esta forma podemos personalizar el font en el header.
Por otro lado, tengo un combo en el browse, como hago para que las opciones del combo me siga usando la fuente que definí en el browse?
Gracias
Re: Avanzando con TBrowseMod
Publicado: Mar Feb 16, 2021 11:39 am
por ramonzea
me sale este error al intentar ajustar las columnas
With Object ::oDBBrowse1
For nCol := 1 To Len(:aCols)
:AdjustColWidth(:aCols[nCol])
Next
End With
Versión Xailer: Xailer 7.0.0
Compilador: Harbour 3.2.0dev (r1912031042)
Compilador C/C++: MinGW GNU C 7.3 (32-bit)
Plataforma: Windows 10 10.0
----------------------- Información detallada del error -----------------------
Subsistema: BASE
Código de error: 1004
Estado: .F.
Descripción: Message not found
Operación: TDbBrwColMod:OGRIDCOL
Argumentos: [ 1] = Tipo: O Valor:
Fichero:
Código error SO: 0
Saludos
Re: Avanzando con TBrowseMod
Publicado: Mar Feb 16, 2021 12:16 pm
por ignacio
Forma correcta:
Código: Seleccionar todo
local oCol
WITH OBJECT ::oBrowseMod1
FOR EACH oCol IN :aDisplayCols
:AdjustColWidth( oCol:oHeaderCol )
NEXT
END WITH
No obstante, se incluirá código para que funcione sin necesidad de indicar el THeaderItemMod
Saludos
Re: Avanzando con TBrowseMod
Publicado: Mar Feb 16, 2021 7:13 pm
por ramonzea
Gracias.
Tengo otro detalle, tengo un proceso de lectura de archivos de text con SQLText, y en el browse los campos que me traen Nil, los deja como texto en blanco, pero con el BrowseMod me deja los Nil. Tengo que correr otro proceso para eliminarlos? o hay alguna propiedad para validarlo?
Saludos.
Re: Avanzando con TBrowseMod
Publicado: Mar Feb 16, 2021 8:34 pm
por ignacio
Ya está corregido.
Un saludo