Page 1 of 1

Class TBUTTONBMP

PostPosted: Wed Jan 16, 2008 9:01 am
by thefull
Antonio, si coges el ejemplo TestBubm.prg, y indicas TEXTBOTTOM, NO FUNCIONA!

Tampoco el TEXTTOP.

Usando el SendMessage que te comento en el otro hilo, se realiza correctamente, intentando hacer lo mismo con esta clase, no es posible.

PostPosted: Wed Jan 16, 2008 10:30 am
by Antonio Linares
Rafa,

Escribe esas claúsulas en mayúsculas. La clase no estaba comprobando si estaban escritas en mayúsculas.

Ya lo hemos arreglado para la próxima versión.

PostPosted: Wed Jan 16, 2008 10:44 am
by thefull
Antonio Linares wrote:Rafa,

Escribe esas claúsulas en mayúsculas. La clase no estaba comprobando si estaban escritas en mayúsculas.

Ya lo hemos arreglado para la próxima versión.


Antonio, las he escrito en mayusculas, es más, en el preprocesado ya realizas el UPPER().

Code: Select all  Expand view
..             
[ <cPostext: TEXTTOP, TEXTBOTTOM, TEXTLEFT, TEXTRIGHT> ] ;

=>....
         <cPrompt>, <.lCancel.>, <cBitmap>, [ Upper(<(cPostext)>) ], <cToolTip> )


Por lo tanto, algo ocurre porque no se posiciona ni arriba ni abajo, sale en medio.

PostPosted: Wed Jan 16, 2008 6:27 pm
by Antonio Linares
Rafa,

Si revisas el código fuente del método Paint() verás que se tiene en cuenta:
Code: Select all  Expand view
   if ! Empty( ::hBitmap )
      if ::cPosText == "TEXTBOTTOM"
         nTop = 7
      elseif ::cPosText == "TEXTTOP"
         nTop = ::nHeight() - 6 - nBmpHeight( ::hBitmap )
      else
         nTop = ( ::nHeight() / 2 ) - ( nBmpHeight( ::hBitmap ) / 2 )
      endif
      if ::cPosText == "TEXTRIGHT"
         nLeft = 7
      elseif ::cPosText == "TEXTLEFT"
         nLeft = ::nWidth() - 6 - nBmpWidth( ::hBitmap )
      else
         nLeft := ( ::nWidth() / 2 ) - ( nBmpWidth( ::hBitmap ) / 2 )
      endif
     
      if ::lActive
         DrawMasked( ::hDC, ::hBitmap, nTop + If( lPressed, 1, 0 ),;
                     nLeft + If( lPressed, 1, 0 ) )
      else
         DrawGray( ::hDC, ::hBitmap, nTop + If( lPressed, 1, 0 ),;
                     nLeft + If( lPressed, 1, 0 ) )
      endif                     
   endif   

PostPosted: Thu Jan 17, 2008 8:30 am
by thefull
Antonio, si, pero si el PREPROCESADOR ya lo pasa a mayúsculas.
Asi, si lo pruebas no funciona correctamente.