Page 1 of 1

new XBrowse features for next build

Posted: Wed Mar 26, 2008 8:08 am
by Antonio Linares
Using trees from XBrowse:
Image

Using a brush for a specific column:
Image

Posted: Wed Mar 26, 2008 9:52 am
by patrickmast
Antonio,

Nice work!
Can you show me the sample code part for the "Trees browse"?

Patrick

Posted: Wed Mar 26, 2008 12:27 pm
by James Bott
Antonio,

I have been wanted to do trees in a browse for a long time. Nice!

I would also like to see the code.

James

Posted: Wed Mar 26, 2008 3:28 pm
by Antonio Linares
Assuming you have grouped data and built a Tree, the code for browsing
the Tree is simple

Syntax: oBrw:SetTree( oTree, [ { resOpen, resClose [, resNoChildren ] } ], [ <bDataLink> ] )

Example:

Code: Select all

REDEFINE XBROWSE oBrw ID <id> OF oDlg
oBrw:SetTree( oTree, { "OPEN","CLOSE","NONE" } )
ACTIVATE DIALOG oDlg
XBrowse creates one column showing the oItem:cPrompt with the bitmaps specified. Based on nLevel, the cPrompt along with bitmaps, if any, is indented within the first column.

If there is any data linked to the TreeItems that is to be shown in the
next columns, simple alternative is to assign all such data as an array
to oItem:cargo. Then columns can be created for this data.

Example:

Code: Select all

ADD TO oBrw DATA oBrw:oTreeItem:Cargo[ 1 ] PICTURE "999" HEADER "Employees"
ADD TO oBrw DATA oBrw:oTreeItem:cargo[ 2 ] PICTURE "999,999" HEADER "Salary"
It is possible for some reason, you may not like to copy all the data into
arrays and assign to oItem:Cargo. This may be the case when the data is very large and copying all the data may be time consuming or memory intensive. In such cases, there is another alternative. You can assign to oItem:Cargo a pointer to the relavant row in the datsource. For example it can be RecNo() of DBF or AbsolutePosition of a Recordset, etc.

In such a case you need to specify a codeblock as 3rd paramter of SetTree method. The codebock can be like { |oItem| (cAlias)->( DbGoTo( oItem:Cargo ) ) }.

In that case, Browse object takes care of positioning the datasource by
evaluating the codeblock with every skip. Then you may add columns like this:

Code: Select all

ADD TO oBrw DATA (cAlias)->EMPCOUNT PICTURE "999" HEADER "Employees"
or
ADD TO oBrw oRs:Fields("TotSalary"):Value PICTURE "999,999" HEADER "TotSalary"
Rest are cosmetics. We welcome any suggestions for further simplification :-)

Posted: Fri Mar 28, 2008 2:24 am
by ShumingWang
Antonio,
Great!
Could add drag some cells like EXCEL ? a black colored area,so to copy ,delete,click ?
Regards!
Shuming Wang

Posted: Fri Mar 28, 2008 1:02 pm
by Antonio Linares
This feature is in the to-do list. But in 8.04, we can achieve same results by selecting multiple rows and hiding unwanted columns.

Methods Copy() to clipboard ( by pressing Ctrl-C ), report and export to excel work on the selected rows and visible columns only.

Posted: Fri Mar 28, 2008 2:26 pm
by Antonio Linares
New display modes:

1. Entire selected line, with highlighted cell
Image

2. Same as before, but after having selected a group of lines
Image

Posted: Fri Mar 28, 2008 5:13 pm
by JC
Fantastic!