Problemas con tooltips en rebars/toolbars.

Problemas con tooltips en rebars/toolbars.

Postby Carlos Mora » Wed Nov 05, 2008 6:00 pm

Me ha ocurrido algo extraño. Cuando uso una toolbar dentro de una Rebar, los tooltips muestran correctamente las letras acentuadas, tal como en
Image

Pero en otro programa hago algo parecido, usando el mismo FW y el mismo Harbour, y obtengo resultados diferentes

Image
[/img]

Las diferencias son el tamaño de los botones, y que la rebar va en un diálogo en lugar de una windows, pero no me doy cuenta por donde vienen los tiros.

Alguna sugerencia?

Un saludo

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

Postby Adolfo » Wed Nov 05, 2008 6:32 pm

Carlos...

Las preguntas obligadas..

Son el mismo Compilador y version de FWH ?
Usas las mismas libs de terceros ?
Lo ejecutas en el mismo PC ?
No tienes ninguna llamada a ANSITOOEM o a OEMTOANSI dentro del PRG ?
Defines el lenguaje en ambas aplicaciones ?

.. y por ultimo.. un pedazo del codigo de ambas llamadas ..para mirarlo un poko y ver por donde va el error.. eso..


Desde Chile
Adolfo
;-) Ji,ji,ji... buena la cosa... "all you need is code"

http://www.xdata.cl - Desarrollo Inteligente
----------
Asus TUF F15, 32GB Ram, 1 TB NVME M.2, 1 TB SSD, GTX 1650
User avatar
Adolfo
 
Posts: 846
Joined: Tue Oct 11, 2005 11:57 am
Location: Chile

Postby Carlos Mora » Thu Nov 06, 2008 8:31 am

Hola Adolfo,

Como había puesto en el primer mensaje, el mismo FW (7.07), el mismo Harbour (8.08).
Casi no uso libs de terceros excepto FW y e Image2PDF.
Y sí, todo compilado y ejecutado en el mismo ordenador, con los mismos directorios.
Y como no uso AnsiToOem ni OemToAnsi desde hace unos cuantos años desde que uso TextPad, de ahí me surgió la duda. El problema es SOLO CON LOS TOOLTIPS DE LA REBAR, en el resto no tengo el más mínimo inconveniente, ni con captions ni nada que se le parezca, y eso desde hace bastantes años.
Lo que puede ser, que no he probado y que es algo que no hago nunca, es definir el lenguaje. Siempre uso el lenguaje por defecto del compilador, cuando surgió la posibilidad de especificar el charset no lo usé por temor a no ser compatible con los programas que ya estaba usando y, fundamentalmente, con el formato de los datos preexistentes en las bases.

Pero el punto es que en ninguno de ambos defino el Charset, y de hecho un proyecto es un subproyecto del otro, es decir que estan juntos hasta en el disco duro.

Seguiré buscando a ver cual puede ser el orgen del problema. El tema de los tooltips en un poco "caja negra", las funciones son parte del bloque cerrado de FW, voy a seguir haciendo pruebas a ver que puede ser...

Gracias por responder. Un saludo desde el otro lado del charco,

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

Postby Antonio Linares » Thu Nov 06, 2008 8:52 am

Carlos,

Este es el código que se usa para asignar los tooltips de las toolbars:
Code: Select all  Expand view
HB_FUNC( TTNSETTEXT ) // pNMTTDISPINFO, cTooltipText
{
   LPNMTTDISPINFO pti = ( LPNMTTDISPINFO ) hb_parnl( 1 );

   MultiByteToWideChar( CP_OEMCP, MB_PRECOMPOSED,
                        ( LPCSTR ) hb_parc( 2 ), -1, ( LPWSTR ) pti->szText,
                        hb_parclen( 2 ) + 1 );

   pti->hinst = NULL;
   pti->lpszText = NULL;
   pti->uFlags = 0;
}

Por si lo quieres modificar ó usar de otra forma.

Lo que necesites solo tienes que pedirlo :-)
regards, saludos

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

Postby Carlos Mora » Thu Nov 06, 2008 8:56 am

Perdón, me habías pedido código.

Code: Select all  Expand view

   DEFINE DIALOG oDlg TITLE "Atisa" FROM 0, 0 TO 480, 800 PIXEL FONT oFont
      oDlg:lHelpIcon := .f.

   @ 0, 0 BROWSE oBrw SIZE 100, 100 ALIAS "M347_BC" OF oDlg FONT oFont

   ADD COLUMN TO oBrw HEADER "Código"        DATA {|| M347_BC->CodigoP } ALIGN DT_CENTER
   ADD COLUMN TO oBrw HEADER "NIF"           DATA {|| M347_BC->NIF     } ALIGN DT_CENTER
   ADD COLUMN TO oBrw HEADER "Op."           DATA {|| M347_BC->ClaveOp } ALIGN DT_CENTER
   ADD COLUMN TO oBrw HEADER "Ignora?"       DATA {|| M347_BC->Ignorar } ALIGN DT_CENTER
   ADD COLUMN TO oBrw HEADER "Importe"       DATA {|| M347_BC->Importe } ALIGN DT_RIGHT
   ADD COLUMN TO oBrw HEADER "Computable"    DATA {|| M347_BC->Importe } ALIGN DT_RIGHT
   ADD COLUMN TO oBrw HEADER "Seguro"        DATA {|| M347_BC->OpSeguro } ALIGN DT_CENTER
   ADD COLUMN TO oBrw HEADER "Arrend.?"      DATA {|| M347_BC->ArrendLoc } ALIGN DT_CENTER
   ADD COLUMN TO oBrw HEADER "Concepto"      DATA {|| M347_BC->Concepto }
   ADD COLUMN TO oBrw HEADER "Fecha"         DATA {|| M347_BC->Fecha } ALIGN DT_CENTER
   ADD COLUMN TO oBrw HEADER "Contrapartida" DATA {|| M347_BC->Contrap } ALIGN DT_CENTER
   ADD COLUMN TO oBrw HEADER "Apunte"        DATA {|| M347_BC->Apunte }  ALIGN DT_RIGHT
   oBrw:nHeightCell += 6
   oBrw:nHeightHead += 6

   ACTIVATE DIALOG oDlg CENTERED ON INIT ( CreaBarra( oDlg ), oDlg:SetControl( oBrw ) )

Return NIL

FUNCTION CreaBarra( oDlg )
   Local oImageList, oBar

   DEFINE IMAGELIST oImageList SIZE 16, 16

   ILDESTROY( oImageList:hImageList )
   oImageList:hImageList:= ILCREATE32( 16, 16 )
   oImageList:Add( TBitmap():Define( ,"..\Icons16\check2.bmp", oDlg ) )
   oImageList:Add( TBitmap():Define( ,"..\Icons16\document_add.bmp", oDlg ) )
   oImageList:Add( TBitmap():Define( ,"..\Icons16\document_preferences.bmp", oDlg ) )
   oImageList:Add( TBitmap():Define( ,"..\Icons16\document_delete.bmp", oDlg ) )
   oImageList:Add( TBitmap():Define( ,"..\Icons16\replace2.bmp", oDlg ) )
   oImageList:Add( TBitmap():Define( ,"..\Icons16\document_gear.bmp", oDlg ) )
   // oImageList:Add( TBitmap():Define( ,"..\Icons16\document_exchange.bmp", oDlg ) )


   oReBar = TReBar():New( oDlg )

   DEFINE TOOLBAR oBar OF oReBar SIZE 16,20  IMAGELIST oImageList

   oReBar:InsertBand( oBar )

   oBar:nHeight -= 2

   DEFINE TBBUTTON OF oBar ;
      ACTION  oDlg:End() ;
      TOOLTIP 'Salir'

   DEFINE TBSEPARATOR OF oBar

   DEFINE TBBUTTON OF oBar ;
      MESSAGE  "Añadir" ;
      ACTION  oDlg:End() ;
      TOOLTIP 'Añadiró'

   DEFINE TBBUTTON OF oBar ;
      ACTION  oDlg:End() ;
      TOOLTIP 'Incluir'

   DEFINE TBBUTTON OF oBar ;
      ACTION  oDlg:End() ;
      TOOLTIP 'Excluir'

   DEFINE TBSEPARATOR OF oBar

   DEFINE TBBUTTON OF oBar ;
      ACTION  GenMov347BC( oDlg ) ;
      TOOLTIP 'Recálcular'

   DEFINE TBBUTTON OF oBar ;
      ACTION  oDlg:End() ;
      TOOLTIP 'Generar registros'

Return NIL



Ojo! Los herrores hortógraficos son para pruebas.

Code: Select all  Expand view
   DEFINE ICON oIcon RESOURCE 1

   DEFINE WINDOW oWnd TITLE "Atisa" MENU MainMenu() ICON oIcon FROM 0, 0 TO 480, 800 PIXEL

   DEFINE IMAGELIST oImageList SIZE 32, 32

   ILDESTROY( oImageList:hImageList )
   oImageList:hImageList:= ILCREATE32( 32, 32 )
   oImageList:Add( TBitmap():Define( "SALIR32"    ,, oWnd ) )
   oImageList:Add( TBitmap():Define( "CLIENTES32" ,, oWnd ) )
   oImageList:Add( TBitmap():Define( "PROVEED32"  ,, oWnd ) )
   oImageList:Add( TBitmap():Define( "IVA32"      ,, oWnd ) )
   oImageList:Add( TBitmap():Define( "VENTAS32"   ,, oWnd ) )
   oImageList:Add( TBitmap():Define( "COMPRAS32"  ,, oWnd ) )
   oImageList:Add( TBitmap():Define( "TESORERIA32",, oWnd ) )
   oImageList:Add( TBitmap():Define( "CONCEPTO32" ,, oWnd ) )

   oReBar = TReBar():New( oWnd )

   DEFINE TOOLBAR oBar OF oReBar SIZE 40, 52 IMAGELIST oImageList

   oReBar:InsertBand( oBar )

   oBar:nHeight -= 2

   DEFINE TBBUTTON OF oBar ;
      PROMPT "Salir" ;
      ACTION  oWnd:End() ;
      TOOLTIP 'Salir del Programa'

   DEFINE TBSEPARATOR OF oBar

   DEFINE TBBUTTON OF oBar ;
      PROMPT "Clientes" ;
      ACTION  ClientesBrowse() ;
      TOOLTIP 'Mantenimiento de Clientes'

   DEFINE TBBUTTON OF oBar ;
      PROMPT "Proveedores" ;
      ACTION  ProveedoresBrowse() ;
      TOOLTIP 'Mantenimiento de Proveedores'

   DEFINE TBSEPARATOR OF oBar

   DEFINE TBBUTTON OF oBar ;
      PROMPT "Tipos de IVA" ;
      ACTION  TipoIVABrowse() ;
      TOOLTIP 'Mantenimiento de Tipos de IVA'

   DEFINE TBBUTTON OF oBar ;
      PROMPT "Ventas" ;
      ACTION  VentasBrowse() ;
      TOOLTIP 'Facturas de Venta'

   DEFINE TBBUTTON OF oBar ;
      PROMPT "Compras" ;
      ACTION  ComprasBrowse() ;
      TOOLTIP 'Facturas de Compra'

   DEFINE TBSEPARATOR OF oBar

   DEFINE TBBUTTON OF oBar ;
      PROMPT "Tesoreria" ;
      ACTION  FondosBrowse() ;
      TOOLTIP 'Gestión de Cuentas de Tesorería'

   DEFINE TBBUTTON OF oBar ;
      PROMPT "Conceptos" ;
      ACTION  ConceptoBrowse() ;
      TOOLTIP 'Gestión de Conceptos de Tesorería'

   SET MESSAGE OF oWnd TO "Datos de Gestión" CENTERED

   ACTIVATE WINDOW oWnd // MAXIMIZED


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

Postby Antonio Linares » Thu Nov 06, 2008 9:02 am

Carlos,

Posiblemente se pueda solucionar cambiando CP_OEMCP por CP_ACP en el código en C que he publicado
regards, saludos

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

Postby Carlos Mora » Thu Nov 06, 2008 9:07 am

Hola Antonio,

gracias por el código, es evidente que no tiene nada que ver. Pero debo estar haciendo algo en algún sitio que cambien la forma en que se interpreta el charset del tooltip, pero darme cuenta de eso en un poco dificil.

Ya veré de que se trata.

Un saludo,

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

Postby Carlos Mora » Thu Nov 06, 2008 9:11 am

Antonio Linares wrote:Carlos,

Posiblemente se pueda solucionar cambiando CP_OEMCP por CP_ACP en el código en C que he publicado


Tal vez, pero no creo que ese sea el problema porque normalmente el tooltip se ve correctamente, es solo en este caso en particular, es decir que algo extraño estoy haciendo por ahí.
Sigo pensando que el problema lo tengo en otro lado y que tu función está correcta.

Se me han ocurrido un par de pruebas más, ya te comento a ver que encuentro.

Gracias por tu atención,

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

Postby Carlos Mora » Thu Nov 06, 2008 9:35 am

Otra prueba más!

En el menú principal del mismo programa uso una window+buttonbar.

Code: Select all  Expand view
    DEFINE ICON OICON RESOURCE "ATICONTA"
    DEFINE WINDOW PRINCIPAL FROM 0, 0 TO SizeY, SizeX PIXEL ;
          TITLE "ATICONTA v2.0 - Programa de contabilidad - Asesores Titulados S.A." ICON OICON COLORS 0, RGB(126,188,165)
          SET MESSAGE TO ("Asesores Titulados, S.A. atisa@atisa.es Tfno. 912054400 ") OF PRINCIPAL

       DEFINE BUTTONBAR oBar SIZE 48, 48 _3D OF PRINCIPAL  // ToolBar
       @ 0,0 BITMAP oBmp RESOURCE "ATICONTA" NOBORDER SIZE 800, 600 OF PRINCIPAL
    ACTIVATE WINDOW PRINCIPAL ON INIT MainInit( oBmp ) VALID ( FErase( cMarcaLog ), .T. )


Y luego se añaden los botones con tooltips, que están en una tabla y que se añaden según el perfil del usuario logueado. En ella los tootips salen perfectos, sin OemToAnsi ni nada raro, editados con gets comunes, o escritos directamente en el código como en el caso del boton "salir"

Image


Y en la misma aplicacion y en el mismo exe armo una ventana con lo de las rebar/toolbar, con el código que subí antes, y

Image

Bueno, eso nada más, que tiene pinta de que lo que afecta a los tooltips es muuuy raro.

Un saludo,

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

Postby Antonio Linares » Thu Nov 06, 2008 10:07 am

Carlos,

Se soluciona con el cambio que te he indicado.

Acabo de probarlo con FWH\samples\ToolBar1.prg cambiando el tooltip "New" por "Añadir" y se veía igual que en tu aplicación.

Ahora se ve bien con ese cambio :-)
regards, saludos

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

Postby Carlos Mora » Thu Nov 06, 2008 11:10 am

Perfecto!

Muchas gracias!

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

Postby jose_murugosa » Fri Nov 07, 2008 2:58 pm

Carlos Mora wrote:Perfecto!

Muchas gracias!

Carlos.


He querido introducir este código y corregir el error en el ejemplo, pero no he sabido como.... :oops:

probé ponerlo con #pragma BEGINDUMP/#pragma ENDDUMP y me da errores....

Podría alguien explicarme como?

Gracias desde ya
Saludos/Regards,
José Murugosa
FWH + Harbour + Bcc7. Una seda!
User avatar
jose_murugosa
 
Posts: 1145
Joined: Mon Feb 06, 2006 4:28 pm
Location: Uruguay

Postby Antonio Linares » Fri Nov 07, 2008 5:17 pm

José,

Que errores te dá ?
regards, saludos

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

Postby jose_murugosa » Fri Nov 07, 2008 5:36 pm

Antonio Linares wrote:José,

Que errores te dá ?

[/quote]

Código:
Code: Select all  Expand view
...codigo de toolbar1.prg modificado......

RETURN

//-----------------------------------------------------

#pragma BEGINDUMP

HB_FUNC( TTNSETTEXT )
{
   LPNMTTDISPINFO pti = ( LPNMTTDISPINFO ) hb_parnl( 1 );

   MultiByteToWideChar( CP_ACP, MB_PRECOMPOSED,
                        ( LPCSTR ) hb_parc( 2 ), -1, ( LPWSTR ) pti->szText,
                        hb_parclen( 2 ) + 1 );

   pti->hinst = NULL;
   pti->lpszText = NULL;
   pti->uFlags = 0;   
}

#pragma ENDDUMP

//-----------

Los errores son:

Error E2451 d:\prueba\prg\toolbar1.prg 143: Undefined Symbol 'LPNMTTDISPINFO' in function HB_FUN_TTNSETTEXT
Error E2379 d:\prueba\prg\toolbar1.prg 143: Statement missing ; in function HB_FUN_TTNSETTEXT
Error E2451 d:\prueba\prg\toolbar1.prg 143: Undefined symbol 'pti' in function HB_FUN_TTNSETTEXT



Gracias desde ya por tu atención
Saludos/Regards,
José Murugosa
FWH + Harbour + Bcc7. Una seda!
User avatar
jose_murugosa
 
Posts: 1145
Joined: Mon Feb 06, 2006 4:28 pm
Location: Uruguay

Postby Carlos Mora » Fri Nov 07, 2008 5:45 pm

José,

te falta el #include <windows.ch>!

Un saludo,

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

Next

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 60 guests