Problema Toolbar

Problema Toolbar

Postby Mike Serra » Sat Apr 07, 2007 5:02 pm

Buenas foro, tengo un pequeño problema, y es que modificando el ejemplo toolbar2.prg en la cual en vez de generar el toolbar y rebar en la ventana principal lo hago en una ventana hija. Bueno, pues cuando paso el cursor sobre los botones, las imagenes se pierden.

Code: Select all  Expand view  RUN
define window ::Container  of owndPrincipal MDICHILD title "Titulo"
      define imagelist ::oImageList SIZE 32, 32
      define imgbitmap of ::oImageList name "NEW"   color nRGB( 255, 0, 255 )
      define imgbitmap of ::oImageList name "KEYS"  color nRGB( 255, 0, 255 )
      
      define rebar ::oReBar of ::Container
    
      define toolbar ::otoolbar of ::oReBar SIZE 50,58 imagelist ::oImageList
    
      define tbbutton of ::otoolbar action   ::First()                tooltip "Ir al Primer Registro"       prompt  "Primer Registro"
      define tbbutton of ::otoolbar action   ::Container:End()    tooltip "Salir del Mantenimiento" prompt  "Salir Mantenimiento"
      // We set the widths for each toolbar
      ::otoolbar:nWidth = 300
      // Now we insert the toolbars into the rebar
      ::oReBar:InsertBand( ::otoolbar )
   
   activate window ::Container maximized
   ::oImageList:End()


Este código es llamado de una opcion principal del menu. Pues cuando aparece la ventana, las imagenes si aparecen, pero cuando el ratón pasa por encima de ella se borran

¿Alguna solución?
Mike Serra
 
Posts: 297
Joined: Fri Apr 14, 2006 5:52 pm
Location: Córdoba (España)

Postby Antonio Linares » Sat Apr 07, 2007 5:07 pm

Mike,

En esta línea estás destruyendo el imagelist, por eso las limágenes se pierden:

activate window ::Container maximized
::oImageList:End()

Has de hacerlo en el valid de esa ventana ó al finalizar la aplicación
regards, saludos

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

Acentos en el tooltip

Postby Mike Serra » Sun Apr 08, 2007 8:25 am

Gracias Antonio, era eso, no me fije que la ventana ejecutaba todas las lineas después de activarla.
:lol:
Por cierto creo que existe un problema con lo acentos en el tooltip, y es que aparecen otros caracteres, ¿qué puede ser?.

MUCHAS GRACIAS.
Mike Serra
 
Posts: 297
Joined: Fri Apr 14, 2006 5:52 pm
Location: Córdoba (España)

Postby Antonio Linares » Sun Apr 08, 2007 12:10 pm

Has probado con OemToAnsi( cToolTip ) ?
regards, saludos

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

Postby Mike Serra » Sun Apr 08, 2007 3:01 pm

Fue lo primero que hice, pero no resultó, además, trabajo con editores en windows y NO debiera de pasar, pero de todas formas los caracteres raros que salen no son los que realmente salen cuando trabajabamos con editores DOS.
:shock:

SALUDOS,
Mike Serra
 
Posts: 297
Joined: Fri Apr 14, 2006 5:52 pm
Location: Córdoba (España)

Postby Antonio Linares » Sun Apr 08, 2007 6:47 pm

Prueba con AnsiToOem( cToolTip ). Puede ser que el toolbar lo aplique directamente.
regards, saludos

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

Postby Carlos Mora » Fri Jun 27, 2008 11:37 am

Hola Antonio,

me he topado con el tema de Ansi to Oem en los tooltips y me puse a investigar un poco ya que me parecía al menos extraño tener que hacer una conversión de ese tipo.

Antonio Linares wrote:Prueba con AnsiToOem( cToolTip ). Puede ser que el toolbar lo aplique directamente.


No es que el toolbar lo aplique directamente, sino que, dependiendo del mensaje del notify, hay que darle uno u otro formato al mensaje. Te posteo un trozo de código que es común a todas las funciones que tratan el tema tooltip.

Code: Select all  Expand view  RUN
          if (pNMHDR->code == TTN_NEEDTEXTA)
                _wcstombsz(pTTTA->szText, str, _countof(pTTTA->szText));
          else
                lstrcpyn(pTTTW->szText, str, _countof(pTTTW->szText));


donde el code puede ser TTN_NEEDTEXTA o TTN_NEEDTEXTW segun sea la version.
Se me ocurre que una solución podría ser que, segun el mensaje, se haga la conversión o nó.

Code: Select all  Expand view  RUN
      #define TTN_GETDISPINFOA -520
      case nCode == TTN_GETDISPINFO .or. nCode == TTN_GETDISPINFOA 
           nId = GetNMHDRIdFrom( nPtrNMHDR )
           TTNSetText( nPtrNMHDR, If( nCode == TTN_GETDISPINFO, AnsiToOem( ::aButtons[ nId ][ 2 ] ), ::aButtons[ nId ][ 2 ] ) )
                                                ^^^^^^^^^^^^^^^^^^^^^^^^
           if ! Empty( ::aButtons[ nId ][ 3 ] )
              ::SetMsg( ::aButtons[ nId ][ 3 ] )
           else
              ::SetMsg( nil )
           endif
           if ::lTTBalloon
              nHWndFrom = GetNMHDRHWndFrom( nPtrNMHDR )
              if ! lAnd( nStyle := GetWindowLong( nHWndFrom, GWL_STYLE ), TTS_BALLOON )
                 SetWindowLong( nHWndFrom, GWL_STYLE, TTS_BALLOON )
              endif
           endif


Lo he probado en Vista y funciona normalmente, sin tener que hacer los AnsiToOem() a los que ya me había desacostumbrado.

Ojo, en una de esas ya está resuelto y yo no tengo la versión actualizada, pero para quien le interese rectificar el problema, acá está el tip.

Un saludo,

Carlos
Carlos Mora
 
Posts: 989
Joined: Thu Nov 24, 2005 3:01 pm
Location: Madrid, España


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 43 guests