Xbrowse oTree Show Bad

Xbrowse oTree Show Bad

Postby Silvio.Falconi » Mon Nov 17, 2014 10:54 am

I Have 3 level of Category and I wish show the dbf on a xbrowse tree
I show only the first and second level and not all 3 levels

cCodice = alltrim(TABMAG->CODICE)
nLevel1:= right(alltrim(cCodice),2)
nLevel2:= right(alltrim(cCodice),4)
nLevel3:= right(alltrim(cCodice),8)


sample :

01 Hardware
0101 Monitors
01010001 Lcd
0102 Keyboads
01020001 Keyb qwrty


The tree run ok only I'm seeing an error on second level

Image



here a small test with data

Code: Select all  Expand view

#include 'fivewin.ch'
#include 'colors.ch'
#include 'xbrowse.ch'
#include "constant.ch"


REQUEST DBFCDX
REQUEST DBFFPT
EXTERNAL ORDKEYNO,ORDKEYCOUNT,ORDCREATE,ORDKEYGOTO



Function test()
Local odlg,oBrw,oFont
   Local  nBottom   := 24
   Local  nRight    := 88
   Local nWidth :=  Max( nRight * DLG_CHARPIX_W, 180 )
   Local nHeight := nBottom * DLG_CHARPIX_H


    RddSetDefault( "DBFCDX" )

    Create_Data()

USE TABMAG
INDEX ON Field->CODICE TO Codice
SET ORDER TO "Codice"
GO TOP





DEFINE FONT oFont NAME "TAHOMA" SIZE 0,-14
DEFINE DIALOG oDlg SIZE nWidth, nHeight   PIXEL FONT oFont


     @ 20,10 XBROWSE oBrw SIZE -10,-10 PIXEL OF oDlg LINES CELL

      oBrw:SetTree( BuildTree2(), { "open", "close", "go" } )


      ADD TO oBrw DATA oBrw:oTreeItem:Cargo[ 1 ] HEADER "Descrizione"



      oBrw:nMarqueeStyle = MARQSTYLE_HIGHLROW
      oBrw:lRecordSelector     := .F. // .t.
      oBrw:lAllowRowSizing     := .F.
      oBrw:lColDividerComplete := .F. // .f.
      oBrw:lAllowColSwapping   := .F.
      oBrw:lAllowColHiding     := .F.
      oBrw:lFastEdit           := .F.
      oBrw:nRowDividerStyle := LINESTYLE_NOLINES
      oBrw:nColDividerStyle := LINESTYLE_NOLINES


   oBrw:CreateFromCode()
   oBrw:aCols[ 1 ]:cHeader = "Codice"



ACTIVATE DIALOG oDlg CENTERED
RELEASE FONT oFont
return nil






  static function BuildTree2()

   local oTree, cCodice

   TREE oTree

        TABMAG->(dbgotop())

      while ! Eof()


             cCodice = alltrim(TABMAG->CODICE)
             nLevel1:= right(alltrim(cCodice),2)
             nLevel2:= right(alltrim(cCodice),4)
             nLevel3:= right(alltrim(cCodice),8)




            //nlevel1
            do while Left( alltrim(TABMAG->CODICE), 2 ) == nLevel1 .and. ! eof()
                _TreeItem( TABMAG->CODICE ):Cargo := { TABMAG->Desc }
                TREE
                TABMAG->(dbskip())

                    //nlevel2
                     do while Left( alltrim(TABMAG->CODICE), 2) == nLevel2 .and. ! eof()
                       _TreeItem( TABMAG->CODICE ):Cargo := { TABMAG->Desc }
                         TREE
                             TABMAG->(dbskip())
                                //nlevel3
                                     do while Left( alltrim(TABMAG->CODICE), 2 ) == nLevel3 .and. ! eof()
                                          _TreeItem( TABMAG->CODICE ):Cargo := { TABMAG->Desc }
                                          TABMAG->(dbskip())
                                       Enddo
                                  ENDTREE
                      Enddo
                  ENDTREE
              ENDDO

        ENDDO
      ENDTREE

GO TOP

return oTree












Function Create_Data()

        local afields_Tabelle  := {   {'Chiave'    ,'C',005,000},;
                                  {'Codice'    ,'C',008,000},;
                                  {'Desc'      ,'C',050,000},;
                                  {'Num1'      ,'N',016,000},;
                                  {'Num2'      ,'N',016,000},;
                                  {'Num3'      ,'N',002,000},;
                                  {'Num4'      ,'N',002,000},;
                                  {'Num5'      ,'N',016,000},;
                                  {'Num6'      ,'N',001,000},;
                                  {'Num7'      ,'N',001,000},;
                                  {'Alfa1'     ,'C',008,000},;
                                  {'Alfa2'     ,'C',008,000},;
                                  {'Alfa3'     ,'C',008,000},;
                                  {'Alfa4'     ,'C',008,000},;
                                  {'Alfa5'     ,'C',008,000},;
                                  {'Alfa6'     ,'C',040,000},;
                                  {'Dat1'      ,'D',008,000}}


        cDir:=""

     DbCreate(cDir+'TA',afields_Tabelle,'DBFCDX')
      close all
      use &(cDir+'TA') new
      select TA
      if FILE(cDir+'TABMAG.DBF')
         delete file &(cdir+'TABMAG.cdx')
         append from &(cdir+'TABMAG')
         dbcommitall()
         close all
         delete file &(cdir+'TABMAG.dbf')
      endif
       close all
     rename &(cdir+'TA.dbf') to &(cdir+'TABMAG.dbf')



     USE TABMAG ALIAS TABMAG
     IF TABMAG->(eof())

        TABMAG->(DbAppend())
        Replace  TABMAG->Chiave with "MERCE"
        Replace  TABMAG->Codice with "01"
        Replace  TABMAG->Desc   with "Hardware"

         TABMAG->(DbAppend())
        Replace  TABMAG->Chiave with "MERCE"
        Replace  TABMAG->Codice with "02"
        Replace  TABMAG->Desc with "Software"

         TABMAG->(DbAppend())
        Replace  TABMAG->Chiave with "MERCE"
        Replace  TABMAG->Codice  with "0101"
        Replace  TABMAG->Desc  with "Monitors"


        TABMAG->(DbAppend())
        Replace  TABMAG->Chiave with "MERCE"
        Replace  TABMAG->Codice  with "0102"
        Replace  TABMAG->Desc  with "KeyBoards"

        TABMAG->(DbAppend())
        Replace  TABMAG->Chiave with "MERCE"
        Replace  TABMAG->Codice with  "01020001"
        Replace  TABMAG->Desc   with  "Keyboard qwerty"


         TABMAG->(DbAppend())
        Replace  TABMAG->Chiave with "MERCE"
        Replace  TABMAG->Codice with  "01010001"
        Replace  TABMAG->Desc   with  "Lcd 15"

        TABMAG->(DbAppend())
        Replace  TABMAG->Chiave with "MERCE"
        Replace  TABMAG->Codice with  "01010002"
        Replace  TABMAG->Desc   with  "Lcd 17"


        TABMAG->(DbAppend())
        Replace  TABMAG->Chiave with "MERCE"
        Replace  TABMAG->Codice with  "01010003"
        Replace  TABMAG->Desc   with  "Lcd 21"



         TABMAG->(DbAppend())
        Replace  TABMAG->Chiave with   "MERCE"
        Replace  TABMAG->Codice with  "01010004"
        Replace  TABMAG->Desc   with  "Crt"


         TABMAG->(DbAppend())
        Replace  TABMAG->Chiave with "MERCE"
        Replace  TABMAG->Codice with "0201"
        Replace  TABMAG->Desc   with "Applications"

        TABMAG->(DbAppend())
        Replace  TABMAG->Chiave with "MERCE"
        Replace  TABMAG->Codice with  "02010001"
        Replace  TABMAG->Desc   with  "OFFICE"

         TABMAG->(DbAppend())
        Replace  TABMAG->Chiave with "MERCE"
        Replace  TABMAG->Codice with  "02010002"
        Replace  TABMAG->Desc   with  "FIVEWIN"



     ENDIF
  DbCloseAll()

 return nil







 
Since from 1991/1992 ( fw for clipper Rel. 14.4 - Momos)
I use : FiveWin for Harbour November 2023 - January 2024 - Harbour 3.2.0dev (harbour_bcc770_32_20240309) - Bcc7.70 - xMate ver. 1.15.3 - PellesC - mail: silvio[dot]falconi[at]gmail[dot]com
User avatar
Silvio.Falconi
 
Posts: 6849
Joined: Thu Oct 18, 2012 7:17 pm

Re: Xbrowse oTree Show Bad

Postby Antonio Linares » Tue Nov 18, 2014 10:29 am

Silvio,

I am afraid that only Rao can help you here, sorry
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41401
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Xbrowse oTree Show Bad

Postby Silvio.Falconi » Wed Nov 19, 2014 11:49 am

Yes of Course, I hope Rao Help...
Since from 1991/1992 ( fw for clipper Rel. 14.4 - Momos)
I use : FiveWin for Harbour November 2023 - January 2024 - Harbour 3.2.0dev (harbour_bcc770_32_20240309) - Bcc7.70 - xMate ver. 1.15.3 - PellesC - mail: silvio[dot]falconi[at]gmail[dot]com
User avatar
Silvio.Falconi
 
Posts: 6849
Joined: Thu Oct 18, 2012 7:17 pm

Re: Xbrowse oTree Show Bad

Postby nageswaragunupudi » Wed Nov 19, 2014 9:05 pm

Caption:
XBrowse is not showing oTree bad. XBrowse shows the oTree correctly.

Your code is building oTree incorrectly.

Suggested code:
Code: Select all  Expand view
#include 'fivewin.ch'

REQUEST DBFCDX

function test()

   local oDlg, oBrw, oFont, oTree

   RddSetDefault( "DBFCDX" )

   Create_Data()
   oTree    := MakeTree()

   DEFINE FONT oFont NAME "TAHOMA" SIZE 0,-14
   DEFINE DIALOG oDlg SIZE 500,400 PIXEL FONT oFont

   @ 10,10 XBROWSE oBrw SIZE -10,-10 PIXEL OF oDlg ;
      DATASOURCE oTree COLUMNS 1  ;
      HEADERS "Codice", "Desc" ;
      LINES CELL NOBORDER

   WITH OBJECT oBrw
      :aCols[ 1 ]:AddBitmap( {   "c:\fwh\bitmaps\16x16\open.bmp", ;
                                 "c:\fwh\bitmaps\16x16\folder.bmp", ;
                                 "c:\fwh\bitmaps\16x16\go.bmp" } )

      :nMarqueeStyle       := MARQSTYLE_HIGHLROW
      :lRecordSelector     := .F. // .t.
      :lAllowRowSizing     := .F.
      :lColDividerComplete := .F. // .f.
      :lAllowColSwapping   := .F.
      :lAllowColHiding     := .F.
      :lFastEdit           := .F.
      :nRowDividerStyle    := LINESTYLE_NOLINES
      :nColDividerStyle    := LINESTYLE_NOLINES
      //
      :CreateFromCode()
   END

   ACTIVATE DIALOG oDlg CENTERED
   RELEASE FONT oFont

return nil

static function MakeTree()

   field CODICE
   local oTree
   local c1, c2, c3

   USE "TAG" NEW SHARED
   INDEX ON CODICE TAG CODICE TO TMP MEMORY
   GO TOP

   TREE oTree
   do while ! eof()
      TREEITEM CODICE CARGO { FIELD->DESC }
      c1    := Left( CODICE, 2 )
      SKIP
      TREE
      do while Left( CODICE,2 ) == c1
         TREEITEM CODICE CARGO { FIELD->DESC }
         c2    := Left( CODICE, 4 )
         SKIP
         TREE
         do while Left( CODICE, 4 ) == c2
            TREEITEM CODICE CARGO { FIELD->DESC }
            SKIP
         enddo
         ENDTREE
      enddo
      ENDTREE
   enddo
   ENDTREE

   oTree:OpenAll()

   CLOSE TAG

return oTree

function Create_Data()

   local cDbf  := "TAG.DBF"
   local aCols := {   ;
      {'Chiave'    ,'C',005,000},;
      {'Codice'    ,'C',008,000},;
      {'Desc'      ,'C',050,000},;
      {'Num1'      ,'N',016,000},;
      {'Num2'      ,'N',016,000},;
      {'Num3'      ,'N',002,000},;
      {'Num4'      ,'N',002,000},;
      {'Num5'      ,'N',016,000},;
      {'Num6'      ,'N',001,000},;
      {'Num7'      ,'N',001,000},;
      {'Alfa1'     ,'C',008,000},;
      {'Alfa2'     ,'C',008,000},;
      {'Alfa3'     ,'C',008,000},;
      {'Alfa4'     ,'C',008,000},;
      {'Alfa5'     ,'C',008,000},;
      {'Alfa6'     ,'C',040,000},;
      {'Dat1'      ,'D',008,000} }

   local aData    := { ;
      { "MERCE", "01",       "Hardware"        }, ;
      { "MERCE", "02",       "Software"        }, ;
      { "MERCE", "0101",     "Monitors"        }, ;
      { "MERCE", "0102",     "KeyBoards"       }, ;
      { "MERCE", "01020001", "Keyborad Qwerty" }, ;
      { "MERCE", "01010001", "LCD 15"          }, ;
      { "MERCE", "01010002", "LCD 17"          }, ;
      { "MERCE", "01010003", "CRT"             }, ;
      { "MERCE", "0201",     "Applications"    }, ;
      { "MERCE", "02010001", "Office"          }, ;
      { "MERCE", "02010002", "FiveWins"        }  }

   if ! File( cDbf )
      DBCREATE( cDbf, aCols, "DBFCDX", .t., "NEWDBF" )
      FW_ArrayToDBF( aData, "CHAIVE,CODICE,DESC" )
      xbrowser alias() autosort
   endif

return nil
 
Regards

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

Re: Xbrowse oTree Show Bad

Postby Silvio.Falconi » Thu Nov 20, 2014 9:08 am

Opps ...thanks Rao...I sad...you're fantastic..
Since from 1991/1992 ( fw for clipper Rel. 14.4 - Momos)
I use : FiveWin for Harbour November 2023 - January 2024 - Harbour 3.2.0dev (harbour_bcc770_32_20240309) - Bcc7.70 - xMate ver. 1.15.3 - PellesC - mail: silvio[dot]falconi[at]gmail[dot]com
User avatar
Silvio.Falconi
 
Posts: 6849
Joined: Thu Oct 18, 2012 7:17 pm


Return to FiveWin for Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 44 guests