Error en SAY en FWH 807

Error en SAY en FWH 807

Postby quique » Wed Jul 30, 2008 12:13 am

Antonio, en la versión anterior de fivewin, el texto aparecía pegado a la derecha

Code: Select all  Expand view  RUN
local oDlg, oSay
define dialog oDlg size 200,30
@ 0,0 say oSay prompt "" right size 100,10 pixel color "r/w"
activate dialog oDlg on init oSay:setText( "Hola mundo" )
return nil


Solución: Quita la línea 261
Saludos
Quique
User avatar
quique
 
Posts: 408
Joined: Sun Aug 13, 2006 5:38 am

Postby quique » Wed Jul 30, 2008 9:30 pm

Antonio ¿este error también viene corregido en el nuevo build?
Saludos
Quique
User avatar
quique
 
Posts: 408
Joined: Sun Aug 13, 2006 5:38 am

Postby Antonio Linares » Wed Jul 30, 2008 11:18 pm

Quique,

La línea 261 no es un error, sino una inteligente aportación realizada por Stefan Haupt: http://forums.fivetechsoft.com/viewtopic.php?t=11942

Lo único que hay que hacer es mejorar ese código para que detecte el estilo SS_RIGHT:
Code: Select all  Expand view  RUN
   if ! lAnd( GetWindowLong( ::hWnd, GWL_STYLE ), SS_RIGHT )
      ::nWidth := GetTextWidth( 0, ::cCaption, If( ::oFont != nil, ::oFont:hFont,) )
   endif 

Y, sí, vamos a incluir esta mejora en el nuevo build de 8.07.
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 quique » Thu Jul 31, 2008 12:59 am

Gracias Antonio, pido una disculpa, tal vez lo que dije fue dicho de manera incorrecta, mi intención era decir el error y como lo solucioné, no que esa era lo solución, eso se lo dejamos a los expertos de fivetech.
Saludos
Quique
User avatar
quique
 
Posts: 408
Joined: Sun Aug 13, 2006 5:38 am

Postby quique » Thu Jul 31, 2008 1:54 am

Faltó considerar los centrados o implementé mal la corrección

Code: Select all  Expand view  RUN
#include "FiveWin.ch"

function main
local oDlg, oSay
define dialog oDlg size 200,30
@ 0,0 say oSay prompt "" center size 100,10 pixel color "r/w"
activate dialog oDlg on init oSay:setText( "Hola mundo" )
return nil


con este metodo setText

Code: Select all  Expand view  RUN
METHOD SetText( cText ) CLASS TSay
#define GWL_STYLE             -16
#define SS_RIGHT           2

   local hDC

   DEFAULT ::lTransparent := .f.

   ::cCaption := If( ::cPicture != nil, Transform( cText, ::cPicture ),;
                     cValToChar( cText ) )

   #ifndef __CLIPPER__
      if ::oWnd:oBrush != nil .and. Empty( ::oWnd:oBrush:hBitmap ) .and. ( IsAppThemed() .or. ::lTransparent )
         DrawPBack( ::hWnd, hDC := GetDC( ::hWnd ) )
         ReleaseDC( ::hWnd, hDC )
      endif
   #endif

//   ::nWidth := GetTextWidth( 0, ::cCaption, If( ::oFont != nil, ::oFont:hFont,) )
   if ! lAnd( GetWindowLong( ::hWnd, GWL_STYLE ), SS_RIGHT )
      ::nWidth := GetTextWidth( 0, ::cCaption, If( ::oFont != nil, ::oFont:hFont,) )
   endif
   SetWindowText( ::hWnd, ::cCaption )

return nil
Saludos
Quique
User avatar
quique
 
Posts: 408
Joined: Sun Aug 13, 2006 5:38 am

Postby Antonio Linares » Thu Jul 31, 2008 8:26 am

Para los centrados esta puede ser la solución:

#define SS_CENTER 1

if ! lAnd( GetWindowLong( ::hWnd, GWL_STYLE ), nOr( SS_RIGHT, SS_CENTER ) )
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 quique » Thu Jul 31, 2008 1:52 pm

Gracias, con eso queda corregido
Saludos
Quique
User avatar
quique
 
Posts: 408
Joined: Sun Aug 13, 2006 5:38 am


Return to FiveWin para Harbour/xHarbour

Who is online

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