FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Problema Toolbar
Posts: 297
Joined: Fri Apr 14, 2006 05:52 PM
Problema Toolbar
Posted: Sat Apr 07, 2007 05: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.

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?
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Problema Toolbar
Posted: Sat Apr 07, 2007 05: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
Posts: 297
Joined: Fri Apr 14, 2006 05:52 PM
Acentos en el tooltip
Posted: Sun Apr 08, 2007 08:25 AM

Gracias Antonio, era eso, no me fije que la ventana ejecutaba todas las lineas despu茅s de activarla.

Por cierto creo que existe un problema con lo acentos en el tooltip, y es que aparecen otros caracteres, 驴qu茅 puede ser?.

MUCHAS GRACIAS.

:lol:

Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Problema Toolbar
Posted: Sun Apr 08, 2007 12:10 PM

Has probado con OemToAnsi( cToolTip ) ?

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 297
Joined: Fri Apr 14, 2006 05:52 PM
Problema Toolbar
Posted: Sun Apr 08, 2007 03: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.

SALUDOS,

:shock:

Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Problema Toolbar
Posted: Sun Apr 08, 2007 06:47 PM

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

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 989
Joined: Thu Nov 24, 2005 03:01 PM
Problema Toolbar
Posted: 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.

          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贸.

      #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
Saludos
Carlos Mora
http://harbouradvisor.blogspot.com/
StackOverflow http://stackoverflow.com/users/549761/carlos-mora
鈥淚f you think education is expensive, try ignorance"

Continue the discussion