Tcbrowse 2 colour one for each line
Tcbrowse 2 colour one for each line
Hi,
Is there any way to have a 2 colours one for each line in tcbrowse with / wihtou lcellstyle
Antonio
Is there any way to have a 2 colours one for each line in tcbrowse with / wihtou lcellstyle
Antonio
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
- James Bott
- Posts: 4654
- Joined: Fri Nov 18, 2005 4:52 pm
- Location: San Diego, California, USA
- Contact:
AHF,
The below info is from my notes file. Note that you have indexes, filters, and deleted records to handle, so the solution has to consider these.
James
---------------------------------
8/24/2007 Update: Antonio posted this one.
oBrw:nClrPane := { || If( OrdKeyNo() % 2 == 0, RGB( 230, 230, 230), RGB( 190, 215, 190 ) ) }
----------------------
This is a much better one, but only for objects. Unfortunately dbskip() only returns nil so you can't do this without a database object. [Update: There is an undocumented function _dbskipper() that does return the number of records skipped, so perhaps this could be done without a database object.]
lClrFlag:=.f.
oLbx:bSkip:={| nRecs | (nRecs:= ::oInvmast:skipper( nRecs ), lClrFlag:=if(nRecs/2 = int(nRecs/2), lClrFlag,!lClrFlag), nRecs) }
oLbx:nClrPane := { || if(lClrFlag, rgb(255,255,235), rgb(192,208,179)) }
The above works with or without indexes, filters, and deleted records.
// end
The below info is from my notes file. Note that you have indexes, filters, and deleted records to handle, so the solution has to consider these.
James
---------------------------------
8/24/2007 Update: Antonio posted this one.
oBrw:nClrPane := { || If( OrdKeyNo() % 2 == 0, RGB( 230, 230, 230), RGB( 190, 215, 190 ) ) }
----------------------
This is a much better one, but only for objects. Unfortunately dbskip() only returns nil so you can't do this without a database object. [Update: There is an undocumented function _dbskipper() that does return the number of records skipped, so perhaps this could be done without a database object.]
lClrFlag:=.f.
oLbx:bSkip:={| nRecs | (nRecs:= ::oInvmast:skipper( nRecs ), lClrFlag:=if(nRecs/2 = int(nRecs/2), lClrFlag,!lClrFlag), nRecs) }
oLbx:nClrPane := { || if(lClrFlag, rgb(255,255,235), rgb(192,208,179)) }
The above works with or without indexes, filters, and deleted records.
// end
-
- Posts: 824
- Joined: Thu Oct 13, 2005 7:39 am
- Location: Germany
AHF,
here is another working solution
here is another working solution
Code: Select all
...
::oBrw:bBkColor := {|nRow,nCol,nStyle| TcBrwCol (nRow,nStyle,::oBrw, aColorK) }
...
FUNCTION TcBrwCol ( nRow, nStyle, oBrw, aColor )
LOCAL nColor
DEFAULT aColor := {RGB( 102, 205, 170 ),RGB( 32, 178, 170 )}
//IF nStyle = 0
IF IsEven( nRow )
nColor := aColor[1]
ELSE
nColor := aColor[2]
ENDIF
//ENDIF
RETURN ( nColor )
FUNCTION IsEven( nVal )
RETURN IIF( nVal = Round( nVal/2, 0 )*2, .T., .F. )
kind regards
Stefan
Stefan
- James Bott
- Posts: 4654
- Joined: Fri Nov 18, 2005 4:52 pm
- Location: San Diego, California, USA
- Contact:
- James Bott
- Posts: 4654
- Joined: Fri Nov 18, 2005 4:52 pm
- Location: San Diego, California, USA
- Contact:
AHF,
>The problem with those solutions is when you begin to skip over the last visible line of the browse (line by line) you always get the smae rownr and it stops working.
It only works when you repaint all the browse. (pg up or down)
I have never had that problem. Can we see the code you are using?
James
>The problem with those solutions is when you begin to skip over the last visible line of the browse (line by line) you always get the smae rownr and it stops working.
It only works when you repaint all the browse. (pg up or down)
I have never had that problem. Can we see the code you are using?
James
- James Bott
- Posts: 4654
- Joined: Fri Nov 18, 2005 4:52 pm
- Location: San Diego, California, USA
- Contact:
AHF,
Below is a working example. Use it with the fw\samples\customer.dbf file.
Regards,
James
Below is a working example. Use it with the fw\samples\customer.dbf file.
Regards,
James
Code: Select all
// Purpose : Sample TCBrowse with alternating color rows
// Author : James Bott
// Date : 1/9/2008
#include "fivewin.ch"
#include "TCBrowse.ch" // <-- Important
function main()
local oWnd, oCustomer, oBrw, lClrFlag
use customer
database oCustomer
define window oWnd title "TCBrowse Test"
@ 0,0 browse oBrw of oWnd update
oBrw:setoDBF( oCustomer )
oBrw:cAlias := oCustomer:cAlias // required
add column to browse oBrw field first
add column to browse oBrw field last
lClrFlag:=.f.
oBrw:bSkip:={| nRecs | (nRecs:= oCustomer:skipper( nRecs ), lClrFlag:=if(nRecs/2 = int(nRecs/2), lClrFlag,!lClrFlag), nRecs) }
oBrw:nClrPane := { || if(lClrFlag, rgb(255,255,235), rgb(192,208,179)) }
oWnd:oClient:=oBrw
activate window oWnd
return nil
- James Bott
- Posts: 4654
- Joined: Fri Nov 18, 2005 4:52 pm
- Location: San Diego, California, USA
- Contact:
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact: