Page 1 of 1

xBrowser: Is it possible to change alignment on the fly?

Posted: Sat Dec 15, 2007 12:35 am
by Otto
nDataStrAlign := AL_RIGHT

Is it possible to change alignment on the fly?
Thanks in advance
Otto

Posted: Sat Dec 15, 2007 10:43 am
by Antonio Linares
Otto,

Have you tried to change it and refresh the browse ?

Posted: Sat Dec 15, 2007 9:44 pm
by Otto
Thank you. Yes I tried with refresh().
Here is my code:

func f_DataStrAlign(r,c,f,o)

oBrw:nRowDividerStyle := 0 // I put this to proof that refresh is working

oBrw:aCols[ o:nPos ]:nDataStrAlign := AL_RIGHT

oBrw:refresh()

return nil

The text does not move.
Regards,
Otto

Posted: Mon Dec 17, 2007 10:30 am
by Antonio Linares
Otto,

Try it this way:

oCol = oBrw:aCols[ o:nPos ]
oCol:nDataStrAlign := AL_RIGHT
oCol:nDataStyle := oCol:DefStyle( oCol:nDataStrAlign, ( oCol:oBrw:nDataLines == 1 ) )

Posted: Mon Dec 17, 2007 1:13 pm
by Otto
Alignment changes but Al_right is not displayed well.
See screen:
Image

Posted: Mon Dec 17, 2007 1:30 pm
by Enrico Maria Giordano
Try to RTrim() the column data.

EMG

Posted: Mon Dec 17, 2007 1:59 pm
by nageswaragunupudi
Working perfectly

Posted: Mon Dec 17, 2007 2:08 pm
by nageswaragunupudi

Code: Select all

METHOD	DataAlign( nAlign ) CLASS TXBrwColumn

	if ! ( ::nDataStrAlign == nAlign )  // tolerate nil param
	   ::nDataStrAlign := AL_RIGHT
      ::nDataStyle := ::DefStyle( ::nDataStrAlign, ( ::oBrw:nDataLines == 1 ) )
   endif

RETURN ::nDataStrAlign

Posted: Mon Dec 17, 2007 2:40 pm
by Otto
Thank you Enrico.
I changed it in METHOD PaintData:
if ::bStrData != nil
cData := RTRIM( Eval( ::bStrData, Self ))
else
cData := ""
endif
Image

Posted: Mon Dec 17, 2007 2:42 pm
by Otto
To nageswaragunupudi:
If I insert the method DataAlign I get all centered.
Regaqrds,
Otto

Posted: Mon Dec 17, 2007 2:51 pm
by nageswaragunupudi
Mr Otto

Obviously the values should be rtimmed for right justification. My proposed method is only for changing justification on the fly.

If you change the paint method you may like to cover the cases of left, center and riight justifcations and all other possibilities. For non left justified painting probably alltrim(,,,) may be better, We should also keep in mind multiple line painting. Paint is a very generic method. Should we change this paint method or specify bStrData appropriately?

Posted: Mon Dec 17, 2007 9:01 pm
by James Bott
It is most common to right justify numbers and left justify text in tables. Numbers need to be right justified to make the decimals aline. I can't think of a good reason to right justify text.

James

Posted: Mon Dec 17, 2007 9:47 pm
by Otto
Hello James,

to learn to use xBrowser I created a little tool xBTool to build a xBrowser visually.
There I want to click on the header and select if the column should be right aligned or left.

Doing this I saw that text fields do not align accurately. Therefore I pointed this problem out.

Regards,
Otto