Page 1 of 1

no consigo que me coja variables "detached locals"

Posted: Fri Nov 06, 2009 6:37 pm
by PP1963
Buenas otra vez.

No consigo que coja las variables detached locals. Este es el codigo, y siempre coge el valor de la ultima variable oCategory1 pulsando cualquiera de los botones generaldos. Lo que quiero es que cuando pulse el boton, se ejecute la funcion categorias(x), donde x es la variable que en teoria debe haber cogido como detached locals.

Gracias por todo.


use category
oCategory1=reccount()
oCategory3=oCategory1-12
oCategory4=oCategory3-12

for oCategory2 = 1 to oCategory1

go oCategory2
oNomCat=category->categoria
oNumeroCt=category->numero

bAction := genblock(oNumeroCt)

if oCategory2 <= 12
@ (0.5-1.5)+(oCategory2*1.5), 46 BUTTON alltrim(oNomCat) OF oDlg SIZE 80, 20 ACTION eval(bAction)
elseif oCategory2 > 12 .and. oCategory2 <= 24
@ (0.5-1.5)+((oCategory2-12)*1.5), 61 BUTTON alltrim(oNomCat) OF oDlg SIZE 80, 20 ACTION eval(bAction)
elseif oCategory2 > 24
@ (0.5-1.5)+((oCategory2-24)*1.5), 76 BUTTON alltrim(oNomCat) OF oDlg SIZE 80, 20 ACTION eval(bAction)
endif

next

close category


ACTIVATE DIALOG oDlg CENTERED


return nil

=================================================================
function GenBlock( oNumeroCt )

return { || categorias(oNumeroCt) }
=================================================================

Re: no consigo que me coja variables "detached locals"

Posted: Sat Nov 07, 2009 3:33 am
by armando.lagunas
hola:

quiero ayudarte, pero no logro entender bien tu código, por favor si puedes colocar alguna imagen para saber que es lo que observa un usuario?.

saludos desde Chile

Re: no consigo que me coja variables "detached locals"

Posted: Sat Nov 07, 2009 5:36 am
by PP1963
Lo que hace es generar una serie de botones desde x=1 hasta x veces. Lo que quiero es que cada boton coja la variable x de la forma categorias(x). En todos los botones coje la ultima variable de x . No se si con esto tienes bastante.

No se como insertar imagenes en este post.

Gracias de antemano

Jose Garcia.

Re: no consigo que me coja variables "detached locals"

Posted: Sat Nov 07, 2009 8:31 am
by mmercado
Hola José:
PP1963 wrote: if oCategory2 <= 12
@ (0.5-1.5)+(oCategory2*1.5), 46 BUTTON alltrim(oNomCat) OF oDlg SIZE 80, 20 ACTION eval(bAction)
elseif oCategory2 > 12 .and. oCategory2 <= 24
@ (0.5-1.5)+((oCategory2-12)*1.5), 61 BUTTON alltrim(oNomCat) OF oDlg SIZE 80, 20 ACTION eval(bAction)
elseif oCategory2 > 24
@ (0.5-1.5)+((oCategory2-24)*1.5), 76 BUTTON alltrim(oNomCat) OF oDlg SIZE 80, 20 ACTION eval(bAction)
endif
Prueba quitando "eval(bAction)" y deja solo "bAction"

Un abrazo.

Re: no consigo que me coja variables "detached locals"

Posted: Sat Nov 07, 2009 8:42 am
by PP1963
Gracias Manuel. Ya lo he probado y al pulsar los botones no hace nada, no ejecuta la funcion categorias() con la variable bloqueada

Ya no se que probar. :cry:

Re: no consigo que me coja variables "detached locals"

Posted: Sat Nov 07, 2009 8:54 am
by PP1963
Así es como quedan los botones, cuando pulso sobre uno para que ejecuta la funcion categorias(oNumeroCt), no hace nada al quitar Eval(bAction), cuando esta eval(bAction) coge siempre la ultima variable que es 30

Image

Re: no consigo que me coja variables "detached locals"

Posted: Sat Nov 07, 2009 1:31 pm
by Patricio Avalos Aguirre
Hola

prueba de esta manera

Code: Select all

use category
oCategory1=reccount()
oCategory3=oCategory1-12
oCategory4=oCategory3-12

for oCategory2 = 1 to oCategory1

    go oCategory2
    oNomCat=category->categoria
    oNumeroCt=category->numero

    bAction := genblock(oNumeroCt)

    if oCategory2 <= 12
        @ (0.5-1.5)+(oCategory2*1.5), 46 BUTTON alltrim(oNomCat) OF oDlg SIZE 80, 20 ACTION eval(&(bAction))
    elseif oCategory2 > 12 .and. oCategory2 <= 24
        @ (0.5-1.5)+((oCategory2-12)*1.5), 61 BUTTON alltrim(oNomCat) OF oDlg SIZE 80, 20 ACTION eval(&(bAction))
    elseif oCategory2 > 24
        @ (0.5-1.5)+((oCategory2-24)*1.5), 76 BUTTON alltrim(oNomCat) OF oDlg SIZE 80, 20 ACTION eval(&(bAction))
    endif
next

close category

ACTIVATE DIALOG oDlg CENTERED


return

//=================================================================
function GenBlock( oNumeroCt )

return( "{ || categorias(oNumeroCt) }" )
//=================================================================

mira esto es parecido lo que haces a lo mejor te puede servir

Code: Select all

    do case

        case cMSg = "CLIENTES"
            nPosMenu := 1
            aMsg := { { "&Proveedores"  , .f., "{ || Proveedores() }", "" } }

        case cMSg = "FACTURAS"
            nPosMenu := 2
            aMsg := { ;
                         { "Facturas según Guías &Despacho",.f., "{ || FactSegunGuias() }"             , "" },;
                         { "&Ingresar OC"                  , .f.,"{ || OrdenCompra(chr(73)) }"             , "" },;
                         { "&Ingresar COT."                       , .f.,"{ || Cotizaciones(chr(73))}"             , "" } }

        case cMSg = "ESTADISTICAS"
            nPosMenu := 6
            aMsg := { ;
                         { "&Margen por Depto"  ,       .f., "{ || Estadisti2( .t. ) }", "BTN_BARRA" }}

        case cMSg = "LIBROVTA"
            nPosMenu := 5
            aMsg :=     {{ "Libro &Compra"                      ,       .f., "{ || LibroCompra()    }"     , "BOOKCLOSE"      },;
                         { "Libro &Venta"                       ,       .f., "{ || LibroVenta()    }"     , "BOOKOPEN"       },;
                         { "Ventas por V&endedor"           ,       .f., "{ || VentasVendedor()}"     , "BTN_VTAVENDEDOR"},;
                         { "Ventas por &Departamento"       ,       .f., "{ || VentaDepto()    }"     , ""               },;
                         { "&Margen de venta por depto."   ,        .f., "{ || VentasMargen()   }"     , "BTN_MARGENVTA"  },;
                         { "&Orden de Compras"                  ,       .f., "{ || RepOCompraDepto()}"   , ""                },;
                         { "&Cotizaciones"                      ,       .f., "{ || RepCotizaciones()}"   , ""                }}

        otherwise
            return( .f. )

    endcase

    MENU oPopup POPUP
        for i := 1 to len( aMsg )
            MakeMenu( aMsg, i )
        next i
    ENDMENU

    if cMsg = "SERV.TECNICO" .and. x:ClassName() == "TTOOLBAR"
        ACTIVATE POPUP oPopup AT aRect[02], aRect[01] OF _oWnd
    endif

return( oPopup )
//-----------------------------------------------------------------------------------------------------------
static function MakeMenu( aMsg, n )
    if empty( aMsg[n] )
        SEPARATOR
    else
        MENUITEM aMsg[n,1] ACTION Eval(&(aMsg[n,3])) WHEN aMsg[n,2] RESOURCE aMsg[n,4]
     endif
return( NIL )
//-----------------------------------------------------------------------------------------------------------
 

Re: no consigo que me coja variables "detached locals"

Posted: Sat Nov 07, 2009 3:01 pm
by PP1963
No funciona, me dice "Error description: Error BASE/1003 Variable does not exist: ONUMEROCT". No coge la variable oNumeroCt

Alguna idea más por ahí.

Muchas gracias a todos. :cry:

Re: no consigo que me coja variables "detached locals"

Posted: Sat Nov 07, 2009 3:03 pm
by César E. Lozada
@ (0.5-1.5)+(oCategory2*1.5), 46 BUTTON alltrim(oNomCat) OF oDlg SIZE 80, 20
aTail(oDlg:aControls):bAction:=&("{|| categorias("+Str(oNumeroCt,,,.T.)+") }")

Re: no consigo que me coja variables "detached locals"

Posted: Sat Nov 07, 2009 5:07 pm
by PP1963
Gracias Cesar.

Me da el siguiente error al compilar: Error E0030 Syntax error: "parse error at '@'"

Re: no consigo que me coja variables "detached locals"

Posted: Sat Nov 07, 2009 5:32 pm
by mmercado
Hola José:

Prueba de la siguiente manera:

Code: Select all

   if oCategory2 <= 12
   @ (0.5-1.5)+(oCategory2*1.5), 46 BUTTON alltrim(oNomCat) OF oDlg SIZE 80, 20
   elseif oCategory2 > 12 .and. oCategory2 <= 24
   @ (0.5-1.5)+((oCategory2-12)*1.5), 61 BUTTON alltrim(oNomCat) OF oDlg SIZE 80, 20
   elseif oCategory2 > 24
   @ (0.5-1.5)+((oCategory2-24)*1.5), 76 BUTTON alltrim(oNomCat) OF oDlg SIZE 80, 20
   endif
   
   GenBlock( ATail( oDlg:aControls ), oNumeroCt )
   next

*=================================================================
function GenBlock( oBtn, oNumeroCt )

   oBtn:bAction := {||Categorias( oNumeroCt ) }

return Nil
*=================================================================
 
Un abrazo.

Re: no consigo que me coja variables "detached locals"

Posted: Sat Nov 07, 2009 5:46 pm
by PP1963
Muchisimas gracias D. Manuel funciona a la perfeccion.

Siempre un amigo a tu disposición

Jose Garcia :D :D :D :D :D :D :D :D