FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin for Harbour/xHarbour Say centrado vertical
Posts: 144
Joined: Sun Dec 18, 2005 03:18 PM
Say centrado vertical
Posted: Tue Nov 29, 2016 11:33 AM

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

Saludos

Salvador
Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: Say centrado vertical
Posted: Tue Nov 29, 2016 12:34 PM
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 144
Joined: Sun Dec 18, 2005 03:18 PM
Re: Say centrado vertical
Posted: Tue Nov 29, 2016 01:16 PM

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

Saludos

Salvador
Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: Say centrado vertical
Posted: Tue Nov 29, 2016 01:18 PM
Code (fw): Select all Collapse
#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

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


Regards



G. N. Rao.

Hyderabad, India
Posts: 144
Joined: Sun Dec 18, 2005 03:18 PM
Re: Say centrado vertical
Posted: Tue Nov 29, 2016 03:01 PM

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

Saludos

Salvador
Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: Say centrado vertical
Posted: Tue Nov 29, 2016 03:09 PM
Wherever you use, use the full code
Code (fw): Select all Collapse
   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 (fw): Select all Collapse
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
viewtopic.php?f=3&t=33237
Regards



G. N. Rao.

Hyderabad, India
Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: Say centrado vertical
Posted: Wed Nov 30, 2016 04:10 AM

We added a new clause VCENTER to SAY command in FWH16.11

Regards



G. N. Rao.

Hyderabad, India

Continue the discussion