FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour xbrowse y detached variables
Posts: 670
Joined: Wed Oct 19, 2005 06:41 PM
xbrowse y detached variables
Posted: Thu Aug 18, 2022 09:20 PM
Buenas tardes
no me funciona este codigo
ya he probado muchas formas si alguien me da una mano muy agradecido

Code (fw): Select all Collapse
#include 'fivewin.ch'
#include 'xbrowse.ch'

function main()

    local aKeys   := {'pichincha','internacio'}
    local hBancos := { => }
    local hRow
    local aCols   := {}
    local oWnd
    local oBrw
    local i
    local oCol1
    local cDbf := '.\test1.dbf'
    local aDbf := { { 'codigo'     , 'C', 10, 0 } ,;
                    { 'pichincha'  , 'C', 15, 0 } ,;
                    { 'internacio' , 'C', 15, 0 } }

    hBancos ['pichincha']  = {}
    hRow = { 'numcuenta' => '1234567' }
    aadd( hBancos ['pichincha'], hRow )

    hBancos ['internacio']  = {}
    hRow = { 'numcuenta' => '890123' }
    aadd( hBancos ['internacio'], hRow )

    dbcreate( cDbf, aDbf )

    use ( cDbf ) new alias camello exclusive
    camello->( dbappend() )
    camello->codigo = '1'
    camello->( dbappend() )
    camello->codigo = '2'
    camello->( dbgotop() )


    DEFINE WINDOW oWnd

    @ 0,0 XBROWSE oBrw OF oWnd alias 'camello' fastedit

    oCol1             := oBrw:AddCol()
    oCol1:bEditValue  := { || ( oBrw:cAlias )->codigo }
    oCol1:cHeader     := "codigo"
    oCol1:cEditPicture:= "@!"
    oCol1:nEditType   := 0
    oCol1:nWidth      := 90
    aCols = {}
    for i = 1 to len( aKeys )
        aadd( aCols, oBrw:AddCol() )
        campotexto( oBrw, i+1, @aCols, i, hBancos, aKeys )
    next

    oBrw:CreateFromCode()


    ACTIVATE WINDOW oWnd





return nil


function campotexto( oBrw, i, aCols, n, hBancos, aKeys )

    local xValue
    local uRet
    local c
    local aRow
    local aEditListTxt
    local aEditListBound
    local j
    local hRow


    aRow                = hBancos[ aKeys[n] ]
    aEditListTxt        = {}
    aEditListBound      = {}
    for j = 1 to len( aRow )
        hRow = aRow[j]
        aadd( aEditListTxt  , hRow['numcuenta'] )
        aadd( aEditListBound, hRow['numcuenta'] )
    next

    c    = alltrim( lower( ( oBrw:cAlias )->( fieldname( i ) ) ) )

    do case
        case c $ 'pichincha'
            aCols[ n ]:bEditValue       := { || ( oBrw:cAlias )->pichincha }
            //xbrowser aCols[ n ]:bEditValue
        case c $ 'internacional'
            aCols[ n ]:bEditValue       := { || ( oBrw:cAlias )->internacio }
        case c $ 'produbanco'
            aCols[ n ]:bEditValue       := { || ( oBrw:cAlias )->produbanco }
        case c $ 'guayaquil'
            aCols[ n ]:bEditValue       := { || ( oBrw:cAlias )->guayaquil }
        case c $ 'bolivariano'
            aCols[ n ]:bEditValue       := { || ( oBrw:cAlias )->bolivarian }
        case c $ 'delazuay'
            aCols[ n ]:bEditValue       := { || ( oBrw:cAlias )->delazuay }
        case c $ 'machala'
            aCols[ n ]:bEditValue       := { || ( oBrw:cAlias )->machala }
    end

    aCols[ n ]:cHeader          := c
    aCols[ n ]:cEditPicture     := "@!"
    aCols[ n ]:nEditType        := EDIT_LISTBOX
    aCols[ n ]:nWidth           := 120
    aCols[ n ]:aEditListTxt     := aEditListTxt   //{'deposito','anticipo'}
    aCols[ n ]:aEditListBound   := aEditListBound //{'DP','AN'}

    do case
        case c $ 'pichincha'
            aCols[ n ]:bOnPostEdit      := { |o,v| ( oBrw:cAlias )->pichincha  := v }
        case c $ 'internacional'
            aCols[ n ]:bOnPostEdit      := { |o,v| ( oBrw:cAlias )->internacio := v }
        case c $ 'produbanco'
            aCols[ n ]:bOnPostEdit      := { |o,v| ( oBrw:cAlias )->produbanco := v }
        case c $ 'guayaquil'
            aCols[ n ]:bOnPostEdit      := { |o,v| ( oBrw:cAlias )->guayaquil  := v }
        case c $ 'bolivariano'
            aCols[ n ]:bOnPostEdit      := { |o,v| ( oBrw:cAlias )->bolivarian := v }
        case c $ 'delazuay'
            aCols[ n ]:bOnPostEdit      := { |o,v| ( oBrw:cAlias )->delazuay   := v }
        case c $ 'machala'
            aCols[ n ]:bOnPostEdit      := { |o,v| ( oBrw:cAlias )->machala    := v }
    end

return uRet

gracias por su tiempo
Wilson
Wilson 'W' Gamboa A
Wilson.josenet@gmail.com
Posts: 670
Joined: Wed Oct 19, 2005 06:41 PM
Re: xbrowse y detached variables
Posted: Fri Aug 19, 2022 02:52 AM
otra version mas compacta pero igual no funciona
Code (fw): Select all Collapse
#include 'fivewin.ch'
#include 'xbrowse.ch'

function main()

    local aKeys   := {'pichincha','internacio'}
    local hBancos := { => }
    local hRow
    local aCols   := {}
    local oWnd
    local oBrw
    local i
    local oCol1
    local cDbf := '.\test1.dbf'
    local aDbf := { { 'codigo'     , 'C', 10, 0 } ,;
                    { 'pichincha'  , 'C', 15, 0 } ,;
                    { 'internacio' , 'C', 15, 0 } }

    hBancos ['pichincha']  = {}
    hRow = { 'numcuenta' => '1234567' }
    aadd( hBancos ['pichincha'], hRow )

    hBancos ['internacio']  = {}
    hRow = { 'numcuenta' => '890123' }
    aadd( hBancos ['internacio'], hRow )

    dbcreate( cDbf, aDbf )

    use ( cDbf ) new alias camello exclusive
    camello->( dbappend() )
    camello->codigo = '1'
    camello->( dbappend() )
    camello->codigo = '2'
    camello->( dbgotop() )


    DEFINE WINDOW oWnd

    @ 0,0 XBROWSE oBrw OF oWnd alias 'camello' fastedit

    oCol1             := oBrw:AddCol()
    oCol1:bEditValue  := { || ( oBrw:cAlias )->codigo }
    oCol1:cHeader     := "codigo"
    oCol1:cEditPicture:= "@!"
    oCol1:nEditType   := 0
    oCol1:nWidth      := 90
    aCols = {}
    for i = 1 to len( aKeys )
        aadd( aCols, oBrw:AddCol() )
        campotexto( oBrw, i+1, @aCols, i, hBancos, aKeys )
    next

    oBrw:CreateFromCode()


    ACTIVATE WINDOW oWnd





return nil


function campotexto( oBrw, i, aCols, n, hBancos, aKeys )

    local xValue
    local uRet
    local c
    local aRow
    local aEditListTxt
    local aEditListBound
    local j
    local hRow


    aRow                = hBancos[ aKeys[n] ]
    aEditListTxt        = {}
    aEditListBound      = {}
    for j = 1 to len( aRow )
        hRow = aRow[j]
        aadd( aEditListTxt  , hRow['numcuenta'] )
        aadd( aEditListBound, hRow['numcuenta'] )
    next

    c    = alltrim( lower( ( oBrw:cAlias )->( fieldname( i ) ) ) )

    aCols[ n ]:bEditValue       := { || ( oBrw:cAlias )->&( c ) }

    aCols[ n ]:cHeader          := c
    aCols[ n ]:cEditPicture     := "@!"
    aCols[ n ]:nEditType        := EDIT_LISTBOX
    aCols[ n ]:nWidth           := 120
    aCols[ n ]:aEditListTxt     := aEditListTxt   //{'deposito','anticipo'}
    aCols[ n ]:aEditListBound   := aEditListBound //{'DP','AN'}

    aCols[ n ]:bOnPostEdit      := { |o,v| ( oBrw:cAlias )->&( c )  := v }

 

return uRet
Wilson 'W' Gamboa A
Wilson.josenet@gmail.com
Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM
Re: xbrowse y detached variables
Posted: Fri Aug 19, 2022 09:13 PM

Estimado Wilson,

El EXE se construye bien y funciona sin dar errores. Que es lo que no funciona como debiera ?

gracias

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 670
Joined: Wed Oct 19, 2005 06:41 PM
Re: xbrowse y detached variables
Posted: Fri Aug 19, 2022 10:46 PM

Antonio gracias por responder
Al escogen con el mouse el listbox este no muestra el valor escogido

Wilson 'W' Gamboa A
Wilson.josenet@gmail.com
Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM
Re: xbrowse y detached variables
Posted: Sat Aug 20, 2022 08:29 AM

Estimado Wilson,

Se lo he comentado al Sr. Rao y va a revisar tu código. Aguarda un poco y lo tendrás :-)

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 670
Joined: Wed Oct 19, 2005 06:41 PM
Re: xbrowse y detached variables
Posted: Sat Aug 20, 2022 12:23 PM

Gracias Master estare a la espera
saludos
Wilson

Wilson 'W' Gamboa A
Wilson.josenet@gmail.com
Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM
Re: xbrowse y detached variables
Posted: Sun Aug 21, 2022 09:15 AM
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 670
Joined: Wed Oct 19, 2005 06:41 PM
Re: xbrowse y detached variables
Posted: Sun Aug 21, 2022 07:07 PM
Antonio muchas gracias pero no resuelve el problema
he creado un mejor ejemplo donde SI funciona una columna definida sin detached locals pero sigue sin funcionar como columna calculada
Code (fw): Select all Collapse
#include 'fivewin.ch'
#include 'xbrowse.ch'

function main()

    local aKeys   := {'pichincha','internacio'}
    local hBancos := { => }
    local hRow
    local aCols   := {}
    local oWnd
    local oBrw
    local i
    local oCol1
    local oCol4
    local cDbf := '.\test1.dbf'
    local aDbf := { { 'codigo'     , 'C', 10, 0 } ,;
                    { 'pichincha'  , 'C', 15, 0 } ,;
                    { 'internacio' , 'C', 15, 0 } ,;
                    { 'tipo_docu1' , 'C', 02, 0 } }

    hBancos ['pichincha']  = {}
    hRow = { 'numcuenta' => '1234567' }
    aadd( hBancos ['pichincha'], hRow )

    hBancos ['internacio']  = {}
    hRow = { 'numcuenta' => '890123' }
    aadd( hBancos ['internacio'], hRow )

    dbcreate( cDbf, aDbf )

    use ( cDbf ) new alias camello exclusive
    camello->( dbappend() )
    camello->codigo = '1'
    camello->( dbappend() )
    camello->codigo = '2'
    camello->( dbgotop() )


    DEFINE WINDOW oWnd

    @ 0,0 XBROWSE oBrw OF oWnd alias 'camello' fastedit



    oCol1             := oBrw:AddCol()
    oCol1:bEditValue  := { || ( oBrw:cAlias )->codigo }
    oCol1:cHeader     := "codigo"
    oCol1:cEditPicture:= "@!"
    oCol1:nEditType   := 0
    oCol1:nWidth      := 90
    aCols = {}
    for i = 1 to len( aKeys )
        aadd( aCols, oBrw:AddCol() )
        campotexto( oBrw, i+1, @aCols, i, hBancos, aKeys )
    next

    oCol4                   := oBrw:AddCol()
    oCol4:bEditValue        := { || ( oBrw:cAlias )->tipo_docu1 }
    oCol4:cHeader           := "Tipo1"
    oCol4:cEditPicture      := "@!"
    oCol4:nEditType         := EDIT_LISTBOX
    oCol4:nWidth            := 80
    oCol4:aEditListTxt      := {'deposito','anticipo'}
    oCol4:aEditListBound    := {'DP','AN'}
    oCol4:bOnPostEdit       := { |o,v| ( oBrw:cAlias )->tipo_docu1 := v }


    //oBrw:nEditTypes    := EDIT_GET

    oBrw:CreateFromCode()


    ACTIVATE WINDOW oWnd





return nil


function campotexto( oBrw, i, aCols, n, hBancos, aKeys )

    local xValue
    local uRet
    local c
    local aRow
    local aEditListTxt
    local aEditListBound
    local j
    local hRow



    aRow                = hBancos[ aKeys[n] ]
    aEditListTxt        = {}
    aEditListBound      = {}
    for j = 1 to len( aRow )
        hRow = aRow[j]
        aadd( aEditListTxt  , { hRow['numcuenta'], hRow['numcuenta'] } )
        aadd( aEditListBound, { hRow['numcuenta'], hRow['numcuenta'] } )
    next

    c    = alltrim( lower( ( oBrw:cAlias )->( fieldname( i ) ) ) )

    aCols[ n ]:bEditValue       := { || ( oBrw:cAlias )->&( c ) }

    aCols[ n ]:cHeader          := c
    aCols[ n ]:cEditPicture     := "@!"
    aCols[ n ]:nEditType        := EDIT_LISTBOX
    aCols[ n ]:nWidth           := 120
    aCols[ n ]:aEditListTxt     := aEditListTxt

    //aCols[ n ]:bOnPostEdit      := { |o,v| ( oBrw:cAlias )->&( c )  := v }


return uRet

en el ejemplo la columna tipo_docu1 objeto oCol4 funciona perfecto pero las columas pichincha, internatio no lo hacen porque son resultado de calculos dentro de una funcion, en el proyecto donde pretendo usarlo son unas dos o mas columnas calculadas que deben regresar con sus respectivos listbox de seleccion por cada columna y esto solo es conocido en runtime con creacion de la base de datos no tengo problema pero si el tratamiento del browse

A lo mejor es la version de fw si alguien puebe probar con la ultima me avisan por favor para actualizar
gracias por tu tiempo
saludos
Wilson 'W' Gamboa A
Wilson.josenet@gmail.com

Continue the discussion