XBrowse Multi Line Cell With Different Fonts

XBrowse Multi Line Cell With Different Fonts

Postby David Williams » Wed Sep 04, 2013 10:35 am

Hi All

I'm trying to show a calendar type browse where within each cell, I have 3 lines of text. I want to show the second line in a larger font with the first and third line smaller.

Any suggestions?

TIA David
User avatar
David Williams
 
Posts: 82
Joined: Fri Mar 03, 2006 6:26 pm
Location: Ireland

Re: XBrowse Multi Line Cell With Different Fonts

Postby ukoenig » Wed Sep 04, 2013 12:47 pm

Hello David,

please have a look at /samples/Testxbr6.prg

Image

Best Regards
Uwe :lol:
Since 1995 ( the first release of FW 1.9 )
i work with FW.
If you have any questions about special functions, maybe i can help.
User avatar
ukoenig
 
Posts: 4043
Joined: Wed Dec 19, 2007 6:40 pm
Location: Germany

Re: XBrowse Multi Line Cell With Different Fonts

Postby nageswaragunupudi » Wed Sep 04, 2013 3:10 pm

The above sample shows usage of oCol:bPaintText.

This offers total flexibility to the programmer and he can paint any cell in his own way.

There is another feature where two or more columns can be painted in a single cell.
By specifying something like
oBrw:aCols[ 1 ]:SetColsAsRows( 1, 2, 3 ), contents of columns 1,2,3 are painted as 3 rows in column 1 and columns 2 and 3 are not displayed. We can specify different fonts, colors, alignment, etc to these columns as usual, except that they are painted under one another as subrows of the cell instead of showing in adjacent columns.

Here is an example. Please compile and run as it is.
Code: Select all  Expand view
function MultiLineCells

   local oDlg, oBrw, aFont[ 3 ]
   local aData    := Array( 4, 12 )
   local n,i,j

   n  := 1
   for i := 1 to 4
      for j := 1 to 10 step 3
         aData[ i, j ]     := NToCDOW( ( n - 1 ) % 7 + 1 )
         aData[ i, j + 1 ] := n
         aData[ i, j + 2 ] := "Some details that may take more than one line"
         n++
      next
   next

   DEFINE FONT aFont[ 1 ] NAME "TAHOMA"  SIZE 0,-16 BOLD
   DEFINE FONT aFont[ 2 ] NAME "IMPACT"  SIZE 0,-34
   DEFINE FONT aFont[ 3 ] NAME "TIMES ROMAN" SIZE 0,-12 ITALIC

   DEFINE DIALOG oDlg SIZE 700,500 PIXEL
   @ 10,10 XBROWSE oBrw SIZE -10,-10 PIXEL OF oDlg DATASOURCE aData AUTOCOLS ;
      LINES NOBORDER

   WITH OBJECT oBrw
      :nWidths    := 150
      :nRowHeight := 100
      for i := 1 to 10 STEP 3
         WITH OBJECT :aCols[ i ]
            :oDataFont     := aFont[ 1 ]
            :nDataStrAlign := AL_CENTER
         END
         WITH OBJECT :aCols[ i + 1 ]
            :oDataFont     := aFont[ 2 ]
            :nDataStrAlign := AL_CENTER
            :bClrStd       := { || { CLR_HRED, CLR_WHITE } }
         END
         WITH OBJECT :aCols[ i + 2 ]
            :oDataFont     := aFont[ 3 ]
            :nDataLines    := 2
         END
         :aCols[ i ]:SetColsAsRows( i, i + 1, i + 2 )
      next
      //
      :CreateFromCode()
   END

   ACTIVATE DIALOG oDlg CENTERED
   AEval( aFont, { |o| o:End() } )

return nil
 


Image

To understand the concept better, please insert this code just after preparing the array
Code: Select all  Expand view
XBROWSER aData

The raw array data looks like this.
Image

Now let us apply formatting to the columns. Every 3rd columns has the same formatting.
For this just comment the line of code in the above sample
Code: Select all  Expand view
//         :aCols[ i ]:SetColsAsRows( i, i + 1, i + 2 )
 

Without this line, each column is displayed side by side.
Image

Now let us paint cols 2 and 3 under col-1. cols 5 and 6 under col 4 and so on.
This is done by restoring the line
Code: Select all  Expand view
        :aCols[ i ]:SetColsAsRows( i, i + 1, i + 2 )

Now the final outcome is what we see in the first screen-shot
Regards

G. N. Rao.
Hyderabad, India
User avatar
nageswaragunupudi
 
Posts: 10632
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Re: XBrowse Multi Line Cell With Different Fonts

Postby Otto » Wed Sep 04, 2013 6:51 pm

Dear Mr. Rao,
I want to try this program but get following error msg:

Application
===========
Path and name: C:\fwh\samples\testbrw.exe (32 bits)
Size: 2,104,832 bytes
Compiler version: xHarbour build 1.2.1 Intl. (SimpLex) (Rev. 6715)
FiveWin Version: FWHX 12.03
Windows version: 6.1, Build 7601 Service Pack 1

Time from start: 0 hours 0 mins 1 secs
Error occurred at: 09/03/13, 20:50:12
Error description: Error BASE/1081 Argument error: +
Args:
[ 1] = N 20
[ 2] = U

Stack Calls
===========
Called from: .\source\classes\XBROWSE.PRG => TXBRWCOLUMN:PAINTCELL( 9690 )
Called from: .\source\classes\XBROWSE.PRG => TXBRWCOLUMN:PAINTDATA( 9561 )
Called from: .\source\classes\XBROWSE.PRG => TXBROWSE:PAINT( 1434 )
Called from: .\source\classes\XBROWSE.PRG => TXBROWSE:DISPLAY( 1253 )

Thanks in advance
Otto
********************************************************************
mod harbour - Vamos a la conquista de la Web
modharbour.org
https://www.facebook.com/groups/modharbour.club
********************************************************************
User avatar
Otto
 
Posts: 6332
Joined: Fri Oct 07, 2005 7:07 pm

Re: XBrowse Multi Line Cell With Different Fonts

Postby alerchster » Wed Sep 04, 2013 8:07 pm

Hallo Otto

Rao's sample runs fine with FWH1307 but not with FWH1203 - there are many changes in xbrowse.prg...
Regards

Ing. Anton Lerchster
User avatar
alerchster
 
Posts: 93
Joined: Mon Oct 22, 2012 4:43 pm

Re: XBrowse Multi Line Cell With Different Fonts

Postby Otto » Wed Sep 04, 2013 8:49 pm

Hello Anton,
thank you. You are right. With the new Fivewin Version this sample is working fine.
Best regards,
Otto
********************************************************************
mod harbour - Vamos a la conquista de la Web
modharbour.org
https://www.facebook.com/groups/modharbour.club
********************************************************************
User avatar
Otto
 
Posts: 6332
Joined: Fri Oct 07, 2005 7:07 pm

Re: XBrowse Multi Line Cell With Different Fonts

Postby David Williams » Thu Sep 05, 2013 10:27 am

Thanks Everyone,

Roa, your sample works perfect and helps me a lot with understanding the power of XBrowse. :D

Thanks again
David
User avatar
David Williams
 
Posts: 82
Joined: Fri Mar 03, 2006 6:26 pm
Location: Ireland

Re: XBrowse Multi Line Cell With Different Fonts

Postby cnavarro » Sat Sep 07, 2013 6:58 pm

Otto wrote:Dear Mr. Rao,
I want to try this program but get following error msg:

Application
===========
Path and name: C:\fwh\samples\testbrw.exe (32 bits)
Size: 2,104,832 bytes
Compiler version: xHarbour build 1.2.1 Intl. (SimpLex) (Rev. 6715)

FiveWin Version: FWHX 12.03

Windows version: 6.1, Build 7601 Service Pack 1

Time from start: 0 hours 0 mins 1 secs
Error occurred at: 09/03/13, 20:50:12
Error description: Error BASE/1081 Argument error: +
Args:
[ 1] = N 20
[ 2] = U

Stack Calls
===========
Called from: .\source\classes\XBROWSE.PRG => TXBRWCOLUMN:PAINTCELL( 9690 )
Called from: .\source\classes\XBROWSE.PRG => TXBRWCOLUMN:PAINTDATA( 9561 )
Called from: .\source\classes\XBROWSE.PRG => TXBROWSE:PAINT( 1434 )
Called from: .\source\classes\XBROWSE.PRG => TXBROWSE:DISPLAY( 1253 )

Thanks in advance
Otto


With these changes in version 12.03 I managed to work:

Code: Select all  Expand view

METHOD PaintData( nRow, nCol, nHeight, lHighLite, lSelected, nOrder, nPaintRow ) CLASS TXBrwColumn

.../...

   if Empty( ::nDataHeight )
      ::nDataHeight  := ::DataHeight()
   endif

   nDataHeight    := If( Empty( ::aRows ), nHeight, ::nDataHeight )
   ::PaintCell( nRow, nCol, nDataHeight, lHighLite, lSelected, nOrder, nPaintRow )

   if ! Empty( ::aRows )
      for n := 2 to Len( ::aRows )

         .../...

         nDataHeight    := If( n == Len( ::aRows ), nHeight, oCol:nDataHeight )
         if Empty( nDataHeight )
            if Empty( oCol:nDataHeight )
               oCol:nDataHeight := oCol:DataHeight()
            endif
            nDataHeight := oCol:nDataHeight
         endif
         oCol:PaintCell( nRow, nCol, nDataHeight, lHighLite, lSelected, nOrder, nPaintRow )
      next n

   endif

return nil
 


Image
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cnavarro
 
Posts: 6541
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: XBrowse Multi Line Cell With Different Fonts

Postby Otto » Mon Sep 16, 2013 1:49 pm

Dear Mr. Rao,
can you please Show me how to get the right values from a dblClick.
Thanks in advance
Otto


Brw:bLDblClick := { |nKey| msginfo( ) }
********************************************************************
mod harbour - Vamos a la conquista de la Web
modharbour.org
https://www.facebook.com/groups/modharbour.club
********************************************************************
User avatar
Otto
 
Posts: 6332
Joined: Fri Oct 07, 2005 7:07 pm

Re: XBrowse Multi Line Cell With Different Fonts

Postby nageswaragunupudi » Mon Sep 16, 2013 2:13 pm

Dear Mr Otto

I do not clearly understand what are the right values you want to know. Can you please explain clearly?

oBrw:bLDClick := { |nRow, nCol, nFlags, oBrw| <func>( nRow,nCol,nFlags,oBrw )}
oCol:bLDClickData := { |nRow, nCol, nFlags, oBrw| <func>( nRow,nCol,nFlags,oCol )}
Regards

G. N. Rao.
Hyderabad, India
User avatar
nageswaragunupudi
 
Posts: 10632
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Re: XBrowse Multi Line Cell With Different Fonts

Postby Otto » Mon Sep 16, 2013 2:23 pm

Dear Mr. Rao,
I tried:
oBrw:bLDblClick := { |nKey| msginfo( oBrw:aCols[ 1 ]:Value ) }
But this gives me always the value of the first column.
I would need the value of the column the user clicks.
Thanks in advance
Otto
********************************************************************
mod harbour - Vamos a la conquista de la Web
modharbour.org
https://www.facebook.com/groups/modharbour.club
********************************************************************
User avatar
Otto
 
Posts: 6332
Joined: Fri Oct 07, 2005 7:07 pm

Re: XBrowse Multi Line Cell With Different Fonts

Postby Rick Lipkin » Mon Sep 16, 2013 2:46 pm

Otto

I asked a similar question and Rao suggested using this ..
Code: Select all  Expand view

cText := oLbx:SelectedCol():Value
 


This will give you the text within the cell clicked.

Rick Lipkin
User avatar
Rick Lipkin
 
Posts: 2665
Joined: Fri Oct 07, 2005 1:50 pm
Location: Columbia, South Carolina USA

Re: XBrowse Multi Line Cell With Different Fonts

Postby cnavarro » Mon Sep 16, 2013 3:16 pm

Otto, not sure if you're looking for:

Code: Select all  Expand view

      :bLDblClick       := { | nRow, nCol, nFlag | MsgInfo( oBrw:aCols[ oBrw:MouseColPos( nCol ) ]:Value ) }
 
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cnavarro
 
Posts: 6541
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: XBrowse Multi Line Cell With Different Fonts

Postby nageswaragunupudi » Mon Sep 16, 2013 5:07 pm

Mr Otto

Mr Rick's suggestion is correct.

oBrw:bLDClick := { || MsgInfo( oBrw:SelectedCol():Value ) }

Mr Navarro

Your solution can give wrong results in some cases.
MouseColPos( nCol ) gives you the number of visible column in the window. There could be some hidden columns or columns to the left of the visible area.

We should take oBrw:ColAtPos( MouseColPos( nCol ) )
Instead we better take oBrw:SelectedCol().
Regards

G. N. Rao.
Hyderabad, India
User avatar
nageswaragunupudi
 
Posts: 10632
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Re: XBrowse Multi Line Cell With Different Fonts

Postby cnavarro » Mon Sep 16, 2013 8:00 pm

Mr. Rao thank you very much for your explanations and arguments
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cnavarro
 
Posts: 6541
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Next

Return to FiveWin for Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 79 guests