xbrowse y detached variables

Post Reply
User avatar
wilsongamboa
Posts: 614
Joined: Wed Oct 19, 2005 6:41 pm
Location: Quito - Ecuador
Been thanked: 5 times

xbrowse y detached variables

Post by wilsongamboa »

Buenas tardes
no me funciona este codigo
ya he probado muchas formas si alguien me da una mano muy agradecido

Code: Select all | Expand

#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
User avatar
wilsongamboa
Posts: 614
Joined: Wed Oct 19, 2005 6:41 pm
Location: Quito - Ecuador
Been thanked: 5 times

Re: xbrowse y detached variables

Post by wilsongamboa »

otra version mas compacta pero igual no funciona

Code: Select all | Expand

#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
User avatar
Antonio Linares
Site Admin
Posts: 42511
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Has thanked: 31 times
Been thanked: 73 times
Contact:

Re: xbrowse y detached variables

Post by Antonio Linares »

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
User avatar
wilsongamboa
Posts: 614
Joined: Wed Oct 19, 2005 6:41 pm
Location: Quito - Ecuador
Been thanked: 5 times

Re: xbrowse y detached variables

Post by wilsongamboa »

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
User avatar
Antonio Linares
Site Admin
Posts: 42511
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Has thanked: 31 times
Been thanked: 73 times
Contact:

Re: xbrowse y detached variables

Post by Antonio Linares »

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
User avatar
wilsongamboa
Posts: 614
Joined: Wed Oct 19, 2005 6:41 pm
Location: Quito - Ecuador
Been thanked: 5 times

Re: xbrowse y detached variables

Post by wilsongamboa »

Gracias Master estare a la espera
saludos
Wilson
Wilson 'W' Gamboa A
Wilson.josenet@gmail.com
User avatar
Antonio Linares
Site Admin
Posts: 42511
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Has thanked: 31 times
Been thanked: 73 times
Contact:

Re: xbrowse y detached variables

Post by Antonio Linares »

regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
wilsongamboa
Posts: 614
Joined: Wed Oct 19, 2005 6:41 pm
Location: Quito - Ecuador
Been thanked: 5 times

Re: xbrowse y detached variables

Post by wilsongamboa »

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: Select all | Expand

#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
Post Reply