IsAppThemed()

IsAppThemed()

Postby Juan Gálvez » Tue Aug 24, 2010 11:45 am

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
Juan Gálvez
 
Posts: 14
Joined: Fri Oct 21, 2005 10:05 am

Re: IsAppThemed()

Postby Antonio Linares » Tue Aug 24, 2010 8:48 pm

Juan,

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

viewtopic.php?f=6&t=19296&p=102733&hilit=IsAppthemed#p102733
regards, saludos

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

Re: IsAppThemed()

Postby Juan Gálvez » Wed Aug 25, 2010 7:29 am

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
Juan Gálvez
 
Posts: 14
Joined: Fri Oct 21, 2005 10:05 am

Re: IsAppThemed()

Postby Antonio Linares » Wed Aug 25, 2010 8:14 am

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: 42203
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: IsAppThemed()

Postby Antonio Linares » Wed Aug 25, 2010 9:11 am

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  Expand view  RUN
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
User avatar
Antonio Linares
Site Admin
 
Posts: 42203
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: IsAppThemed()

Postby Juan Gálvez » Wed Aug 25, 2010 2:43 pm

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 los cambios 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
Juan Gálvez
 
Posts: 14
Joined: Fri Oct 21, 2005 10:05 am

Re: IsAppThemed()

Postby Antonio Linares » Wed Aug 25, 2010 2:46 pm

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
User avatar
Antonio Linares
Site Admin
 
Posts: 42203
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: IsAppThemed()

Postby Juan Gálvez » Wed Aug 25, 2010 3:13 pm

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
Juan Gálvez
 
Posts: 14
Joined: Fri Oct 21, 2005 10:05 am

Re: IsAppThemed()

Postby Antonio Linares » Thu Aug 26, 2010 8:44 am

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
User avatar
Antonio Linares
Site Admin
 
Posts: 42203
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: IsAppThemed()

Postby Juan Gálvez » Thu Aug 26, 2010 9:57 am

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()

Postby Juan Gálvez » Thu Aug 26, 2010 10:20 am

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
Juan Gálvez
 
Posts: 14
Joined: Fri Oct 21, 2005 10:05 am

Re: IsAppThemed()

Postby Antonio Linares » Thu Aug 26, 2010 11:19 am

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
User avatar
Antonio Linares
Site Admin
 
Posts: 42203
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: IsAppThemed()

Postby Juan Gálvez » Thu Aug 26, 2010 11:46 am

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() ).
Juan Gálvez
 
Posts: 14
Joined: Fri Oct 21, 2005 10:05 am

Re: IsAppThemed()

Postby Antonio Linares » Thu Aug 26, 2010 12:07 pm

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
User avatar
Antonio Linares
Site Admin
 
Posts: 42203
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: IsAppThemed()

Postby Juan Gálvez » Thu Aug 26, 2010 2:22 pm

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).
Juan Gálvez
 
Posts: 14
Joined: Fri Oct 21, 2005 10:05 am

Next

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 98 guests