William,
Recientemente hemos modificado el método SetText() de la Clase TSay para que ajuste el tamaño del control al texto a mostrar, para que se vea en su totalidad.
Este cambio puede ser no deseable en algunas circunstancias. Posiblemente la solución sería añadir una nueva DATA lAdjust ó similar, que controle si ajustar ó no el tamaño del SAY.
Aqui tienes el código más reciente de este método por si quieres que lo revisemos juntos, y decidamos la forma más adecuada. Gracias!
- Code: Select all Expand view RUN
METHOD SetText( cText ) CLASS TSay
local hDC, nWidth
DEFAULT ::lTransparent := .f.
::cCaption := If( ::cPicture != nil, Transform( cText, ::cPicture ),;
cValToChar( cText ) )
#ifndef __CLIPPER__
if ! Empty( ::hWnd ) .and. ::oWnd:oBrush != nil .and. Empty( ::oWnd:oBrush:hBitmap ) .and. ( IsAppThemed() .or. ::lTransparent )
DrawPBack( ::hWnd, hDC := GetDC( ::hWnd ) )
ReleaseDC( ::hWnd, hDC )
endif
#endif
if ! Empty( ::hWnd )
if ! lAnd( GetWindowLong( ::hWnd, GWL_STYLE ), nOr( SS_LEFT, SS_RIGHT, SS_CENTER ) )
nWidth = GetTextWidth( 0, ::cCaption, If( ::oFont != nil, ::oFont:hFont,) ) + 20
if nWidth > ::nWidth
::nWidth = nWidth
endif
endif
SetWindowText( ::hWnd, ::cCaption )
endif
return nil