IsAppThemed()

Juan Gálvez
Posts: 14
Joined: Fri Oct 21, 2005 10:05 am

IsAppThemed()

Post by Juan Gálvez »

Hola Antonio,

Como sabes, estoy probando FWH 10.07 y lo hago con el actual SVN de Harbour, Borland 5.82 y bajo Windows 7 Professional.

No sé si se trata del mismo problema que he detectado con los gripper,s pero la función IsAppThemed() está retornando siempre .T. (aún sin temas activos).

¿ Puedes comprobarlo ?

Gracias y saludos
Juan
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: IsAppThemed()

Post by Antonio Linares »

Juan,

Ese error se corrigió en un build publicado posteriormente. Por favor revisa este post:

http://forums.fivetechsupport.com/viewt ... ed#p102733
regards, saludos

Antonio Linares
www.fivetechsoft.com
Juan Gálvez
Posts: 14
Joined: Fri Oct 21, 2005 10:05 am

Re: IsAppThemed()

Post by Juan Gálvez »

Antonio,

El build que estamos usando es ése. El instalable indica FWH/FWHX 10.7 02/Aug/2010.

Recuerda que uso el SVN de Harbour y Borland C 5.82 bajo un Win7 Professional (tema Windows Clásico).

¿ Has podido mirar el asunto de los gripper,s ?

Saludos
Juan
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: IsAppThemed()

Post by Antonio Linares »

Juan,

Mantienes un fichero manifest de temas externo ó dentro de los recursos del ejecutable ?

Prueba a quitarlo y comprueba el valor de IsAppThemed(), gracias
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: IsAppThemed()

Post by Antonio Linares »

Juan,

En caso de que estés usando la cláusula 2007 de FWH, entonces este cambio es necesario para que se vea el "gripper" en source\classes\msgbar.prg:

Code: Select all

METHOD Paint() CLASS TMsgBar

   local aInfo := ::DispBegin()

   if ::l2007
      ::PaintBar()      
      ::Say( ::nHeight / 4 - 2,;
             If( ::lCentered, ( ( ( If( Len( ::aItem ) > 0, ::aItem[ 1 ]:nLeft(), ::nWidth ) ) ) / 2 ) - ( GetTextWidth( ::hDC,;
             If( Empty( ::cMsg ), ::cMsgDef, ::cMsg ),;
             ::oWnd:oFont:hFont ) / 2 ), 4 ),;
              If( Empty( ::cMsg ), ::cMsgDef, ::cMsg ),;
             ::nClrText,,, .T., .T. )
      ::lPainting := .T.
      ASend( ::aItem, "Paint()" )
      if ::lPaint3L
         MsgPaint3L( ::hWnd, ::nClrPane, ::hDC )  // esta línea dibuja el "gripper"
      endif   
      ::lPainting := .F.
      if ::bPainted != nil
         Eval( ::bPainted, ::hDC )
      endif
      ::DispEnd( aInfo )
      return nil
   endif

   ...
 
regards, saludos

Antonio Linares
www.fivetechsoft.com
Juan Gálvez
Posts: 14
Joined: Fri Oct 21, 2005 10:05 am

Re: IsAppThemed()

Post by Juan Gálvez »

Antonio,

Cuando quito el fichero manifest de temas de los recursos del ejecutable IsAppThemed() siempre retorna .F. (aún con temas activos).

Además, sin llegar a implementar _ que me indicas ya que pruebo con ::l2007 == .F., también se pintan bien los grippers.

Ya me dirás si necesitas más pruebas ...

Saludos
Juan
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: IsAppThemed()

Post by Antonio Linares »

Juan,

Como puedes quitar el fichero manifest de temas y que los temas estén activos ? Me refiero en tu aplicación

La solución de poner a .F. la DATA l2007 tambien sería válida, siempre y cuando no uses la claúsula 2007
regards, saludos

Antonio Linares
www.fivetechsoft.com
Juan Gálvez
Posts: 14
Joined: Fri Oct 21, 2005 10:05 am

Re: IsAppThemed()

Post by Juan Gálvez »

Antonio,

Espera que NO nos liemos :)

Me refería a temas activos en Windows 7.

Por otro lado, el código que me proporcionas ya me va bien para que se pinte el "gripper" con ::l2007 == .T. porque nuestras aplicaciones pueden ser parametrizadas para que ::l2007 se fije a .T. o .F. (a gusto del usuario).

En definitiva, lo que falta por solucionar son los 2 problemas que hemos observado que provoca tener el fichero manifest entre los recursos del ejecutable :

1) IsAppThemed() siempre retorna .T.
2) Los grippers NO se pintan

¿ no es eso ?

Saludos
Juan
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: IsAppThemed()

Post by Antonio Linares »

Juan,

IsAppThemed() devolverá .T. si encuentra el fichero manifest bien este dentro o fuera del ejecutable. Tendriamos que ver como detectar que aunque ese fichero exista, los temas no estan activados.

Anteriormente usábamos la función IsAppThemed() de UXTHEME.DLL (Windows) pero hemos visto que siempre devuelve .T. por el hecho de que Windows este usando temas aunque nuestra aplicación no los use.

Asi que de momento una solución seria que borraseis el fichero manifest y entonces la función IsAppThemed() de FWH devolvería .F.

En cuanto al "gripper", no me comentas lineas más arriba que ya te funciona ? En que condiciones no te funciona ? gracias,
regards, saludos

Antonio Linares
www.fivetechsoft.com
Juan Gálvez
Posts: 14
Joined: Fri Oct 21, 2005 10:05 am

Re: IsAppThemed()

Post by Juan Gálvez »

Antonio,

Hay algo que no entiendo ...

En anteriores versiones (p.e. FWH 9.01), IsAppThemed() sólo devolvía .T. si se cumplían 2 condiciones simultáneamente :

1) El fichero manifest estaba dentro del ejecutable (fuera de él NO lo he probado).
2) Windows tenía temas activos.

¿ No es éste el comportamiento deseado ?

Respecto de los grippers, han empezado a funcionar cuando he sacado el fichero manifest del ejecutable.

Saludos
Juan
Juan Gálvez
Posts: 14
Joined: Fri Oct 21, 2005 10:05 am

Re: IsAppThemed()

Post by Juan Gálvez »

Antonio,

A modo de prueba, he sustituido el módulo THEMES.OBJ de FIVEHC.LIB por el de la versión 9.01 y ahora tanto IsAppThemed() como los grippers funcionan correctamente.

Ya me dirás ...

Saludos
Juan
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: IsAppThemed()

Post by Antonio Linares »

Juan,

Por lo que he entendido de tus mensajes, tu aplicación está funcionando en un Windows con temas pero tu aplicación no usa temas. Es así ?

Pongámonos de acuerdo primero en lo básico :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
Juan Gálvez
Posts: 14
Joined: Fri Oct 21, 2005 10:05 am

Re: IsAppThemed()

Post by Juan Gálvez »

Antonio,

Me pillaste :)

¿ Qué quieres decir si mi aplicación usa temas ?

Yo NO hago nada especial, incluyo el fichero manifest y es el propio FWH quien tiene sus comportamientos específicos si IsAppThemed() == .T. ( p.e. el uso de DrawPBack() ).
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: IsAppThemed()

Post by Antonio Linares »

Juan,

Al comienzo de esta conversación comentastes:
Recuerda que uso el SVN de Harbour y Borland C 5.82 bajo un Win7 Professional (tema Windows Clásico).
Que quieres decir con "tema Windows Clásico" ?

Lo más sencillo es que pongas una imagen de como se ve tu aplicación, asi nos entenderemos mejor :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
Juan Gálvez
Posts: 14
Joined: Fri Oct 21, 2005 10:05 am

Re: IsAppThemed()

Post by Juan Gálvez »

Antonio,

Sólo identificaba el escenario en el que IsAppThemed() devolvía .T. y los grippers NO se pintaban.

Si no me equivoco, fijar el tema "Windows clásico" en Win7 es sinónimo de desactivar los temas y en consecuencia IsAppThemed() debería retornar .F. (así funcionaba p.e. FWH 9.01).
Post Reply