Ejemplo de un Tree con xBrowse

Ejemplo de un Tree con xBrowse

Postby Armando » Tue Mar 21, 2023 12:59 am

Hola Amigos del foro:

Necesito crear un Tree en un xBrowse, he buscado en el foro troceando
código de acá y de allá pero no logro el objetivo.

Tengo una lista de precios por envíos (mensajería)

Peso Zona Costo
1 1 50.00
1 2 75.00
1 3 90.00
1 4 150.00
2 1 80.00
2 2 120.00
2 3 150.00
2 4 200.00
2 5 210.00
3 1 125.00

Mi necesidad es poder mostrar el tree en el browse y dar la posibilidad de agregar registros, modificarlos o eliminarlos.

Cualquier ejemplo de ayuda es agradecida

Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
Armando
 
Posts: 3061
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: Ejemplo de un Tree con xBrowse

Postby cmsoft » Tue Mar 21, 2023 1:45 am

Hola Armando. Esta es una opcion, hay que mejorarla... Pasa que el valor de la 3ra columna lo pone en 0 cuando en realidad debería no mostrar nada, pero se puede mejorar..
La idea de este ejemplo es que muestre una vista grilla y puedas cambiar a vista arbol
Code: Select all  Expand view

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

function Main()  

    local oWnd, oBrw
    local oTree , oBtn
 
   
    /*USE Customer alias "cus"
    INDEX ON Field->State TO State
    SET ORDER TO "State"*/

    LlenarMatris()
    GO TOP
    DEFINE WINDOW oWnd TITLE "Cambiando el tipo de datos xbrowse"
   

        @ 10,200 BTNBMP oBtn PROMPT "TREE" SIZE 150,30 PIXEL OF oWnd FLAT ;
        ACTION  Mutar(oBrw, oBtn)
       
        @ 50,0 XBROWSE oBrw OF oWnd ;
        LINES STYLE FLAT NOBORDER CELL;
        alias "cus" COLUMNS "Peso","Zona", "Precio";
        HEADERS "Peso","Zona", "Precio" PIXEL SIZE 1300,600

        //oBrw:nMarqueeStyle = MARQSTYLE_HIGHLROW
        oBrw:CreateFromCode()

   
    ACTIVATE WINDOW oWnd MAXIMIZED
   
return nil  




******************************************
** Mutar vista
STATIC FUNCTION Mutar(oBrw,oBot)
IF !oBrw:nDataType == 1
   oBrw:ResetData( alias(),{"Peso","Zona", "Precio"} )
   oBrw:GoTop()  
   oBot:cTitle := "TREE"
   ELSE    
   oBrw:SetTree( 2)
   oBrw:oTree:OpenAll()
   oBrw:GoTop()
   oBot:cTitle := "BROWSE"
endif  
RETURN nil  

STATIC FUNCTION LlenarMatris()
local aCols, aDatos, i
IF File('armando.dbf')
   USE armando alias "cus"
   INDEX ON Field->peso TO peso
   SET ORDER TO "peso"
   RETURN nil
   ELSE
   aCols := { ;
               { "peso",    'N',  4,   0  }, ;
               { "zona",    'N',  4,   0  }, ;
               { "precio",  'N', 10,   2  }  }
   
      DBCREATE("ARMANDO.DBF",aCols, "DBFCDX",.t.,'DAT')

      aDatos := { { 1, 1, 50.00},;
                  { 1, 2, 75.00},;
                  { 1, 3, 90.00},;
                  { 1, 4, 150.00},;
                  { 2, 1, 80.00},;
                  { 2, 2, 120.00},;
                  { 2, 3, 150.00},;
                  { 2, 4, 200.00},;
                  { 2, 5, 210.00},;
                  { 3, 1, 125.00}}
      for i := 1 to LEN(aDatos)
          DAT->( DBAPPEND() )
          DAT->( FieldPut( 1, aDatos[i,1] ))
          DAT->( FieldPut( 2, aDatos[i,2] ))
          DAT->( FieldPut( 3, aDatos[i,3] ))
      next i
      CLOSE DAT
      USE armando alias "cus"
      INDEX ON Field->peso TO peso
      SET ORDER TO "peso"
ENDIF
RETURN nil
 
User avatar
cmsoft
 
Posts: 1189
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: Ejemplo de un Tree con xBrowse

Postby Armando » Tue Mar 21, 2023 3:50 am

César:

Te agradezco el ejemplo y tu amabilidad, como siempre.

Una diferencia es que yo uso ADO y MySql, pero bueno, es un comienzo.

Ojalá haya alguien más que aporte.

Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
Armando
 
Posts: 3061
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México


Return to FiveWin para Harbour/xHarbour

Who is online

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