Page 1 of 1

Say centrado vertical

Posted: Tue Nov 29, 2016 11:33 am
by Salvador
Hola a todos,

como se debe aplicar a un SAY el estilo SS_CENTERIMAGE para que el texto quede centrado verticalmente?
He probado oSay:nStyle := nOr( oSay:nStyle, SS_CENTERIMAGE), pero para que actúe, hay que hacer oSay:Refresh() después de activar el dialogo que lo contiene.

En mi opinión el comando de definición del SAY debería incluir una clausula lVertical o lCenterV o similar, así se aplicaría el efecto al momento de crearlo.

Gracias de antemano

Re: Say centrado vertical

Posted: Tue Nov 29, 2016 12:34 pm
by karinha

Re: Say centrado vertical

Posted: Tue Nov 29, 2016 1:16 pm
by Salvador
Gracias karinha por responder tan rápido
quizás no me he explicado bien, no me refiero a imprimir en sentido vertical sino a centrar el texto verticalmente con respecto a la altura del campo

Re: Say centrado vertical

Posted: Tue Nov 29, 2016 1:18 pm
by nageswaragunupudi

Code: Select all

#include "fivewin.ch"

#define SS_CENTERIMAGE      0x00000200

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

function SayTestDlg

   local oDlg, oSay

   DEFINE DIALOG oDlg TRUEPIXEL TITLE "SAY VCENTER"

   @ 20,20 SAY oSay PROMPT "Center" SIZE 200,100 PIXEL OF oDlg  CENTER

   if Empty( oSay:hWnd )
      oSay:nStyle := nOr( oSay:nStyle, SS_CENTERIMAGE  ) // dialogs
   else
      oSay:WinStyle( SS_CENTERIMAGE, .t. ) // windows, etc
   endif

   ACTIVATE DIALOG oDlg CENTERED ;
      ON PAINT oDlg:Box( oSay:nTop-1, oSay:nLeft-1, oSay:nBottom+1, oSay:nRight+ 1 )

return nil

//----------------------------------------------------------------------------//
 
Image

Re: Say centrado vertical

Posted: Tue Nov 29, 2016 3:01 pm
by Salvador
For me works oSay:WinStyle( SS_CENTERIMAGE, .t. ), my SAY is inside a buttonbar

Would be easier if the command SAY had a clause lCenterV or similar

Tankyou very much Mr. Rao

Re: Say centrado vertical

Posted: Tue Nov 29, 2016 3:09 pm
by nageswaragunupudi
Wherever you use, use the full code

Code: Select all

   if Empty( oSay:hWnd )
      oSay:nStyle := nOr( oSay:nStyle, SS_CENTERIMAGE  ) // dialogs
   else
      oSay:WinStyle( SS_CENTERIMAGE, .t. ) // windows, etc
   endif
 
That takes care of all situations and saves your time in searching for solution.

Yes we are considering providing additional parameter for Say.

When you want to paint on buttonbar better to use oBar:bPainted than use SAY. Because say's transparency does not work on all cases of gradients.

Code: Select all

oBar:bPainted := { || oBar:SayText( cText, aRect ) }
 
This paints the text centered in the aRect (you can control alignment too)
For example see how text is painted on buttonbar in this post
http://forums.fivetechsupport.com/viewt ... =3&t=33237

Re: Say centrado vertical

Posted: Wed Nov 30, 2016 4:10 am
by nageswaragunupudi
We added a new clause VCENTER to SAY command in FWH16.11