In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

Avanzando con TBrowseMod

Foro público de Xailer en español
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9246
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Re: Avanzando con TBrowseMod

Mensaje por ignacio »

Desde el IDE?

Gracias
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9246
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Re: Avanzando con TBrowseMod

Mensaje 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
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Avatar de Usuario
gabo1
Mensajes: 127
Registrado: Lun Oct 13, 2014 9:42 am

Re: Avanzando con TBrowseMod

Mensaje 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!
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9246
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Re: Avanzando con TBrowseMod

Mensaje 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
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Avatar de Usuario
gabo1
Mensajes: 127
Registrado: Lun Oct 13, 2014 9:42 am

Re: Avanzando con TBrowseMod

Mensaje 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!
.
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9246
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Re: Avanzando con TBrowseMod

Mensaje 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
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Avatar de Usuario
MarceloAR
Mensajes: 24
Registrado: Dom Dic 01, 2019 2:38 pm
Ubicación: Argentina
Contactar:

Re: Avanzando con TBrowseMod

Mensaje 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
Marcelo Roggeri
Argentina
Avatar de Usuario
ramonzea
Mensajes: 130
Registrado: Mar Sep 15, 2015 6:42 am
Ubicación: México
Contactar:

Re: Avanzando con TBrowseMod

Mensaje 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
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9246
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Re: Avanzando con TBrowseMod

Mensaje 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
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Avatar de Usuario
ramonzea
Mensajes: 130
Registrado: Mar Sep 15, 2015 6:42 am
Ubicación: México
Contactar:

Re: Avanzando con TBrowseMod

Mensaje 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.
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9246
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Re: Avanzando con TBrowseMod

Mensaje por ignacio »

Ya está corregido.

Un saludo
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Responder