Page 1 of 1

Display the text vertically

Posted: Thu Dec 03, 2015 8:36 am
by Natter
Hello !

Is it possible in the cell of xBrowse to display the text vertically ?

Re: Display the text vertically

Posted: Thu Dec 03, 2015 1:02 pm
by nageswaragunupudi
Image

Code: Select all

#include "fivewin.ch"

function Main()

   local oWnd, oFont, oVert, oBrw
   local aData := { { "One", "Five Win" }, { "Two", "Hello World" }}

   DEFINE FONT oFont NAME "TAHOMA" SIZE 0,-12
   DEFINE FONT oVert NAME "TAHOMA" SIZE 0,-12 NESCAPEMENT 900

   DEFINE WINDOW oWnd
   oWnd:SetFont( oFont )

   @ 0,0 XBROWSE oBrw OF oWnd DATASOURCE aData AUTOCOLS ;
      HEADERS "First", "Second" ;
      LINES NOBORDER

   WITH OBJECT oBrw:aCols[ 1 ]
      :oHeaderFont   := oVert
      :oDataFont     := oVert
   END
   oBrw:nRowHeight   := 100

   oBrw:CreateFromCode()
   oWnd:oClient := oBrw

   ACTIVATE WINDOW oWnd CENTERED
   RELEASE FONT oFont, oVert

return nil
 
I have to agree, the vertical alignment of the text in the cells is not correct.
We need to improve this.

Please also let us know the version of FWH you are using.

Re: Display the text vertically

Posted: Thu Dec 03, 2015 1:24 pm
by horacio
I think it does not take vertical text alignment. In the header and data . It is possible to do so ?

Re: Display the text vertically

Posted: Thu Dec 03, 2015 1:27 pm
by nageswaragunupudi
horacio wrote:I think it does not take vertical text alignment. In the header and data . It is possible to do so ?
As I said, we need to do some improvements and we shall do.
But basically it is possible and easy to paint vertical text in headers and cells.

Re: Display the text vertically

Posted: Thu Dec 03, 2015 2:14 pm
by horacio
Sorry , I had not fully read the post .

Saludos

Re: Display the text vertically

Posted: Thu Dec 03, 2015 8:42 pm
by Natter
Thank, Mr. Rao

FWH1507/BCC7/xHarbour

Re: Display the text vertically

Posted: Fri Dec 04, 2015 2:14 am
by nageswaragunupudi

Code: Select all

#include "fivewin.ch"

function Main()

   local oWnd, oFont, oVert, oBrw
   local aData := { { "One", "Five Win" }, { "Two", "Hello World" }}

   DEFINE FONT oFont NAME "TAHOMA" SIZE 0,-12
   DEFINE FONT oVert NAME "TAHOMA" SIZE 0,-12 NESCAPEMENT 900

   DEFINE WINDOW oWnd
   oWnd:SetFont( oFont )

   @ 0,0 XBROWSE oBrw OF oWnd DATASOURCE aData AUTOCOLS ;
      HEADERS "First", "Second" ;
      LINES NOBORDER

   WITH OBJECT oBrw:aCols[ 1 ]
      :oHeaderFont   := oVert
      :oDataFont     := oVert
      :bPaintText    := { | oCol, hDC, cData, aRect, aColors, lHighLite, lSelected | ;
                          PaintText( oCol, hDC, cData, aRect, aColors, lHighLite, lSelected ) }
   END
   oBrw:nRowHeight   := 80

   oBrw:CreateFromCode()
   oWnd:oClient := oBrw

   ACTIVATE WINDOW oWnd CENTERED
   RELEASE FONT oFont, oVert

return nil

#define DT_CENTER                   0x00000001

func PaintText( Self, hDC, cData, aRect, aColors, lHighLite, lSelected )

   local nTextWidth     := ::oBrw:GetWidth( cData, ::oDataFont )
   local nBottom

   nBottom  := aRect[ 3 ] - ( aRect[ 3 ] - aRect[ 1 ] - nTextWidth ) / 2
   DrawTextEx( hDC, cData, { nBottom, aRect[ 2 ], aRect[ 1 ], aRect[ 4 ] }, DT_CENTER )

return nil
 
Image

Re: Display the text vertically

Posted: Fri Dec 04, 2015 6:23 am
by nageswaragunupudi
FWH15.10 now paints vertical text in cells honoring the nDataStrAlign.

Re: Display the text vertically

Posted: Fri Dec 04, 2015 7:06 am
by Natter
This is what we need. Thank, Mr. Rao !

Is it possible in XBrowse horizontal merging of cells (a la Excel) ?

Re: Display the text vertically

Posted: Fri Dec 04, 2015 7:23 am
by nageswaragunupudi
Natter wrote: Is it possible in XBrowse horizontal merging of cells (a la Excel) ?
No
Only vertical merging.

Re: Display the text vertically

Posted: Thu Sep 10, 2020 2:08 pm
by mariordz
Good mornign Mr. Rao, I know this is an old post, but when trying to use it I get the next error:

Code: Select all

Application
===========
   Path and name: C:\xDevStudio\Projects\Tubelite\Tubelite.EXE (32 bits)
   Size: 9,551,360 bytes
   Compiler version: Harbour 3.2.0dev (r1603082110)
   FiveWin  version: FWH 19.12
   C compiler version: Borland/Embarcadero C++ 7.0 (32-bit)
   Windows version: 6.2, Build 9200 

   Time from start: 0 hours 0 mins 5 secs 
   Error occurred at: 10/09/2020, 09:06:37
   Error description: Error BASE/1003  No existe la variable: OVERT

Stack Calls
===========
   Called from: C:\xDevStudio\Projects\Tubelite\Source\Tubelite.prg => DIRECTORIO( 6915 )
   Called from: C:\xDevStudio\Projects\Tubelite\Source\Tubelite.prg => (b)DEFINE_RIBBON( 1558 )
   Called from: .\source\classes\TRBTN.PRG => TRBTN:CLICK( 717 )
   Called from: .\source\classes\TRBTN.PRG => TRBTN:LBUTTONUP( 917 )
   Called from: .\source\classes\CONTROL.PRG => TCONTROL:HANDLEEVENT( 1791 )
   Called from: .\source\classes\TRBTN.PRG => TRBTN:HANDLEEVENT( 1575 )
   Called from: .\source\classes\WINDOW.PRG => _FWH( 3559 )
   Called from:  => WINRUN( 0 )
   Called from: .\source\classes\WINDOW.PRG => TWINDOW:ACTIVATE( 1097 )
   Called from: C:\xDevStudio\Projects\Tubelite\Source\Tubelite.prg => MAIN( 494 )
 
this is teh part on the code:

Code: Select all

    WITH OBJECT oBrw:aCols[ 1 ]
        :oDataFont     := oVert
        :bPaintText    := { | oCol, hDC, cData, aRect, aColors, lHighLite, lSelected | ;
                          PaintText( oCol, hDC, cData, aRect, aColors, lHighLite, lSelected ) }
    END

Re: Display the text vertically

Posted: Thu Sep 10, 2020 4:06 pm
by nageswaragunupudi
The above program compiles and executes perfectly here.
Please check if you copied the program correctly.

Re: Display the text vertically

Posted: Thu Sep 10, 2020 4:10 pm
by nageswaragunupudi
This was the proposed program for very old versions.
For all recent versions, this is extremely simple.

Simple assignment of vertical font is enough.

This sample works.

Code: Select all

#include "fivewin.ch"

function Main()

   local oWnd, oFont, oVert, oBrw
   local aData := { { "One", "Five Win" }, { "Two", "Hello World" }}

   DEFINE FONT oFont NAME "TAHOMA" SIZE 0,-12
   DEFINE FONT oVert NAME "TAHOMA" SIZE 0,-12 NESCAPEMENT 900

   DEFINE WINDOW oWnd
   oWnd:SetFont( oFont )

   @ 0,0 XBROWSE oBrw OF oWnd DATASOURCE aData AUTOCOLS ;
      HEADERS "First", "Second" ;
      LINES NOBORDER

   WITH OBJECT oBrw:aCols[ 1 ]
      :oHeaderFont   := oVert
      :oDataFont     := oVert
   END
   oBrw:nRowHeight   := 80

   oBrw:CreateFromCode()
   oWnd:oClient := oBrw

   ACTIVATE WINDOW oWnd CENTERED
   RELEASE FONT oFont, oVert

return nil
   
 

Re: Display the text vertically

Posted: Thu Sep 10, 2020 4:42 pm
by mariordz
You are totally right Mr. Rao, I failed to expalin correctly what I wanted.
The first column of my xbrowse has the branch the employees are assigned to, and i have it merged, what I really wanted to achieve was to show the text in vertical orientation in to the merged cells, and the example you provide shows the vertical text in one row only.

I hope this can be achieved, only for aesthetic reasons
Image

Re: Display the text vertically

Posted: Thu Sep 10, 2020 9:00 pm
by Marc Venken
mariordz wrote:You are totally right Mr. Rao, I failed to expalin correctly what I wanted.
The first column of my xbrowse has the branch the employees are assigned to, and i have it merged, what I really wanted to achieve was to show the text in vertical orientation in to the merged cells, and the example you provide shows the vertical text in one row only.

I hope this can be achieved, only for aesthetic reasons
Image
If you use CRLF (Line Feed) then I think you got what you need.

From Mr. Rao's sample (above)

local aData := { { "One"+CRLF+"TWO", "Five Win" }, { "Two"+CRLF+"DRIE", "Hello World" }}