xbrtree sample

xbrtree sample

Postby Silvio » Sun Feb 07, 2010 3:02 pm

seeing the xbrtree sample I want make an modify

On my tree there are 2 level

Image




THIS IS THE TEST MODIFIED
Code: Select all  Expand view

#include "FiveWin.ch"
#include "xbrowse.ch"

function Main()

   local oWnd, oBrw

   USE HARDWARE
   INDEX ON Field->LABORATORY TO LABS
   SET ORDER TO "LABS"
   GO TOP

   DEFINE WINDOW oWnd TITLE "DBF shown as a tree with XBrowse"

   @ 0, 0 XBROWSE oBrw OF oWnd LINES CELL

   oBrw:SetTree( BuildTree(), {"TREE_LAB", "TREE_AULE", Hard_bmp(Field->TYPE) } )

   ADD TO oBrw DATA oBrw:oTreeItem:Cargo[ 1 ] HEADER "MARCA"
   ADD TO oBrw DATA oBrw:oTreeItem:Cargo[ 2 ] HEADER "MODELLO"

   oBrw:nMarqueeStyle = MARQSTYLE_HIGHLROW

   oBrw:CreateFromCode()

   oBrw:aCols[ 1 ]:cHeader = "Laboratory & Hardware"

   oWnd:oClient = oBrw

   ACTIVATE WINDOW oWnd

return nil

static function BuildTree()

   local oTree, cState

   TREE oTree
      while ! Eof()
         if Empty( cState )
            _TreeItem( HARDWARE->LABORATORY ):Cargo := { Space( 20 ), Space( 20 ) }
            TREE
            cState = HARDWARE->LABORATORY
         else
            if cState != HARDWARE->LABORATORY
               ENDTREE
               cState = HARDWARE->LABORATORY
               _TreeItem( HARDWARE->LABORATORY ):Cargo := { Space( 20 ), Space( 20 ) }
               TREE
            endif
         endif
         if HARDWARE->LABORATORY == cState
            _TreeItem( HARDWARE->Type ):Cargo := { HARDWARE->marca, HARDWARE->modello }
         endif
         SKIP
      enddo
      ENDTREE
   ENDTREE

   GO TOP

return oTree


static function Hard_bmp(ctipo)
   Local cValoreBmp
    //"TREE_HARD","TREE_LAPTOP","TREE_PRINTER"

DO CASE
CASE alltrim(ctipo)=="COMPUTER"
         cValoreBmp:= "TREE_HARD"
CASE alltrim(ctipo)=="NOTEBOOK"
          cValoreBmp:= "TREE_LAPTOP"
CASE alltrim(ctipo)=="PRINTERS"
          cValoreBmp:= "TREE_PRINTER"
ENDCASE
       ctipo :=""
RETURN  cValoreBmP



Image


How I can make to insert different bitmaps for the four component ( LABORATORY,computer,Notebook,Printers) ?

i WISH ASSIGN TO LABORATORY TREE_HARD.BMP WHEN IS CLOSED TREE_AULE.BMP WHEN IT IS OPENED
TO COMPUTER TREE_HARD.BMP
TO NOTEBOOK TREE_LAPTOP.BMP
TO PRINTERS TREE_PRINT.BMP


i MADE THE FUNCTION

static function Hard_bmp(ctipo)
Local cValoreBmp
//"TREE_HARD","TREE_LAPTOP","TREE_PRINTER"

DO CASE
CASE alltrim(ctipo)=="COMPUTER"
cValoreBmp:= "TREE_HARD"
CASE alltrim(ctipo)=="NOTEBOOK"
cValoreBmp:= "TREE_LAPTOP"
CASE alltrim(ctipo)=="PRINTERS"
cValoreBmp:= "TREE_PRINT"
ENDCASE
ctipo :=""
RETURN cValoreBmp


Image


AND i INSERT IT ON oBrw:SetTree( BuildTree(), {"TREE_LAB", "TREE_AULE", Hard_bmp(Field->TYPE) } )

I SEE TREE_AULE AND TREE_LAB BITMAPS WHEN THE TREE IS OPENED AND CLOSED AND THIS IS RIGHT

BUT THEN I SEE THE TREE_HARD.BMP FOR THE HARDWARE PRINTERS AND LAPTOP

HOW i CAN TO SHOW THE OTHER BMPS ?



HERE THE RC FILE

TREE_AULE BITMAP "AULE.BMP"
TREE_LAB BITMAP "LAB.BMP"
TREE_PRINT BITMAP "PRINT.BMP"
TREE_HARD BITMAP "HARD.BMP"
Best Regards, Saludos

Falconi Silvio
User avatar
Silvio
 
Posts: 3107
Joined: Fri Oct 07, 2005 6:28 pm
Location: Teramo,Italy

Re: xbrtree sample

Postby nageswaragunupudi » Mon Feb 08, 2010 3:56 pm

Please try:
Code: Select all  Expand view
  oBrw:SetTree( BuildTree(), {"TREE_LAB", "TREE_AULE", 'TREE_HARD' } )
   
   WITH OBJECT oBrw:aCols[ 1 ]
      :AddResource( 'TREE_LAPTOP' )
      :AddResource( 'TREE_PRINT' )
      :bBmpData := { ||  If( oBrw:oTreeItem:oTree == nil, ;
             HB_DeCode( field->Type, 'NOTEBOOK', 4, 'PRINTERS', 5, 3 ), ;
             If( oBrw:oTreeItem:lOpened, 1, 2 ) ) }
   END
 

Please check spellings
Last edited by nageswaragunupudi on Mon Feb 08, 2010 10:10 pm, edited 1 time in total.
Regards

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

Re: xbrtree sample

Postby Silvio » Mon Feb 08, 2010 4:41 pm

make error

Application
===========
Path and name: C:\work\prg\TESTTREE\xbrwtree.Exe (32 bits)
Size: 1,885,696 bytes
Time from start: 0 hours 0 mins 0 secs
Error occurred at: 02/08/10, 17:40:53
Error description: Error BASE/1003 Variable does not exist: SELF
Args:

Stack Calls
===========
Called from: xbrwtree.prg => (b)MAIN(24)
Called from: .\source\classes\XBROWSE.PRG => TXBRWCOLUMN:PAINTDATA(8211)
Called from: .\source\classes\XBROWSE.PRG => TXBROWSE:PAINT(1334)
Called from: .\source\classes\XBROWSE.PRG => TXBROWSE:DISPLAY(991)
Called from: .\source\classes\CONTROL.PRG => TCONTROL:HANDLEEVENT(1423)
Called from: .\source\classes\XBROWSE.PRG => TXBROWSE:HANDLEEVENT(9921)
Called from: .\source\classes\WINDOW.PRG => _FWH(3333)
Called from: => DIALOGBOXINDIRECT(0)
Called from: .\source\classes\DIALOG.PRG => TDIALOG:ACTIVATE(273)
Called from: .\source\function\ERRSYSW.PRG => ERRORDIALOG(343)
Called from: .\source\function\ERRSYSW.PRG => (b)ERRORSYS(27)
Called from: xbrwtree.prg => (b)MAIN(24)
Called from: .\source\classes\XBROWSE.PRG => TXBRWCOLUMN:PAINTDATA(8211)
Called from: .\source\classes\XBROWSE.PRG => TXBROWSE:PAINT(1334)
Called from: .\source\classes\XBROWSE.PRG => TXBROWSE:DISPLAY(991)
Called from: .\source\classes\CONTROL.PRG => TCONTROL:HANDLEEVENT(1423)
Called from: .\source\classes\XBROWSE.PRG => TXBROWSE:HANDLEEVENT(9921)
Called from: .\source\classes\WINDOW.PRG => _FWH(3333)
Called from: => UPDATEWINDOW(0)
Called from: .\source\classes\WINDOW.PRG => TWINDOW:ACTIVATE(936)
Called from: xbrwtree.prg => MAIN(65)
Best Regards, Saludos

Falconi Silvio
User avatar
Silvio
 
Posts: 3107
Joined: Fri Oct 07, 2005 6:28 pm
Location: Teramo,Italy

Re: xbrtree sample

Postby nageswaragunupudi » Mon Feb 08, 2010 10:11 pm

I edited the above code.
Please check again.
Regards

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

Re: xbrtree sample

Postby Silvio » Tue Feb 09, 2010 7:47 am

Nages ,
not run ok
I see all items ( level 2) with Tree_hard.bmp
I sent you the test and the res to your email to test it
Best Regards, Saludos

Falconi Silvio
User avatar
Silvio
 
Posts: 3107
Joined: Fri Oct 07, 2005 6:28 pm
Location: Teramo,Italy

Re: xbrtree sample

Postby Silvio » Wed Feb 10, 2010 10:03 am

Any news for it please ?
here not run ok
Best Regards, Saludos

Falconi Silvio
User avatar
Silvio
 
Posts: 3107
Joined: Fri Oct 07, 2005 6:28 pm
Location: Teramo,Italy

Re: xbrtree sample

Postby Silvio » Wed Feb 10, 2010 6:21 pm

MR RAO ,
DO YOU HAVE FOUND A SOLUTION ?

ANTONIO SAD ME "Rao is the master using trees on the xbrowse. He is the expert on that issue...."

AND THERE IS ANOTHER QUESTION NOW

WHEN i MAKE


oApp():oGrid:bChange :={ || (RefreshCont(oApp:oCont,oDHardware),) }

STAT FUNCTION RefreshCont(oCont,cdbf)
oApp():oCont:cTitle:="Hardware "+tran((cdbf)->(OrdKeyNo()),'@E 999999')+" di "+tran((cdbf)->(OrdKeyCount()),'@E 999999')
oApp():oCont:refresh()
return NIL


NOT REFRESH THE CAPTION

i'M AFRAID THE TREE ON XBROWSE NOT RUN OK
Last edited by Silvio on Wed Feb 10, 2010 6:25 pm, edited 1 time in total.
Best Regards, Saludos

Falconi Silvio
User avatar
Silvio
 
Posts: 3107
Joined: Fri Oct 07, 2005 6:28 pm
Location: Teramo,Italy

Re: xbrtree sample

Postby nageswaragunupudi » Wed Feb 10, 2010 6:24 pm

Same logic.
Variables and spellings should be adopted to your program.

Here is the corrected parts of the code and RC file

Code: Select all  Expand view
  WITH OBJECT oBrw:aCols[ 1 ]
      :AddResource( 'TREE_LAPTOP' )
      :AddResource( 'TREE_PRINTERS' )
      :bBmpData := { ||  If( oBrw:oTreeItem:oTree == nil, ;
             HB_DeCode( Trim( oBrw:oTreeItem:cPrompt ), 'NOTEBOOK', 4, 'PRINTERS', 5, 3 ), ;
             If( oBrw:oTreeItem:lOpened, 1, 2 ) ) }

   END
 


rc file
Code: Select all  Expand view
TREE_AULE     BITMAP "AULE.BMP"
TREE_LAB      BITMAP "LAB.BMP"
TREE_PRINTERS BITMAP "PRINT.BMP"
TREE_HARD     BITMAP "HARD.BMP"
TREE_LAPTOP   BITMAP "LAPTOP.BMP"
 

You did not include all bitmaps

With these changes it is working correctly here
Regards

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

Re: xbrtree sample

Postby Silvio » Wed Feb 10, 2010 6:37 pm

THANK NOW RUN CORRECTLY HOW YOU CAN SEE HERE

Image


AND FOR THE SECOND QUESTION ?

i USE
oApp():oGrid:bChange :={ || (RefreshCont(oApp:oCont,oDHardware),) }

STAT FUNCTION RefreshCont(oCont,cdbf)
oApp():oCont:cTitle:="Hardware "+tran((cdbf)->(OrdKeyNo()),'@E 999999')+" di "+tran((cdbf)->(OrdKeyCount()),'@E 999999')
oApp():oCont:refresh()
return NIL



TO SHOW ON oApp():oCont:cTitle THE NUMBER OF RECORD SAMPLE : Hardware 5678 of 6700

it not run ok
Best Regards, Saludos

Falconi Silvio
User avatar
Silvio
 
Posts: 3107
Joined: Fri Oct 07, 2005 6:28 pm
Location: Teramo,Italy

Re: xbrtree sample

Postby nageswaragunupudi » Wed Feb 10, 2010 7:25 pm

The tree is in memory. While navigating the tree, the actual dbf is not traversed.
So, you should keep the OrdkeyNo() or RecNo() of the record in 3rd element of the array in Cargo
and use that value to refresh the title.
Regards

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

Re: xbrtree sample

Postby Silvio » Wed Feb 10, 2010 7:51 pm

ok

I made
----------------------------------------------------------------------------------------------------------------------------------------
static function BuildTree()

local oTree, cState

TREE oTree
while ! (oDHardware)->(Eof())
if Empty( cState )
_TreeItem( (oDHardware)->LABORATORY ):Cargo := { Space( 20 ), Space( 20 ),Space( 20 ) }
TREE
cState = (oDHardware)->LABORATORY
else
if cState != (oDHardware)->LABORATORY
ENDTREE
cState =(oDHardware)->LABORATORY
_TreeItem( (oDHardware)->LABORATORY ):Cargo := { Space( 20 ), Space( 20 ),Space( 20 ) }
TREE
endif
endif
if (oDHardware)->LABORATORY == cState
nrecord:="Hardware "+tran((oDHardware)->(OrdKeyNo()),'@E 999999')+" di "+tran((oDHardware)->(OrdKeyCount()),'@E 999999')
_TreeItem( (oDHardware)->Type ):Cargo := { (oDHardware)->marca, (oDHardware)->modello , nrecord }
endif
(oDHardware)->(DBSKIP())
enddo
ENDTREE
ENDTREE


return oTree



STAT FUNCTION RefreshCont(oCont,cdbf)
oApp():oCont:cTitle:=((oDHardware)->Type ):Cargo[3]
oApp():oCont:refresh()
return NIL


it make error

Application
===========
Path and name: C:\work\PRG\GMI\main.Exe (32 bits)
Size: 2,903,552 bytes
Time from start: 0 hours 0 mins 8 secs
Error occurred at: 10-02-2010, 20:51:11
Error description: Error BASE/1004 Class: 'CHARACTER' has no exported method: CARGO
Args:
[ 1] = C

Stack Calls
===========
Called from: => CARGO(0)
Called from: source\pHardware.prg => REFRESHCONT(221)
Called from: source\pHardware.prg => (b)GMI110(91)
Called from: .\source\classes\XBROWSE.PRG => TXBROWSE:CHANGE(909)
Best Regards, Saludos

Falconi Silvio
User avatar
Silvio
 
Posts: 3107
Joined: Fri Oct 07, 2005 6:28 pm
Location: Teramo,Italy


Return to FiveWin for Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 17 guests

cron