Haz tu Pregunta

Revision history [regresar]

click to hide/show revision 1
versión inicial

Ok, solucionado, se puede acceder al formulario con

getDrawPage().getForms().

import time

def BusquedaTabla(*args): # Si se llama desde un botón, pasa el argumento del evento del objeto que lo llama
    # The context variable is of type XScriptContext and is available to
    # all BeanShell scripts executed by the Script Framework
    momento1 = time.clock()
    Libro = XSCRIPTCONTEXT.getDocument()
    oFormularios = Libro.getCurrentController().getActiveSheet().getDrawPage().getForms()
    # Comprobamos si el evento se llama desde un boton
    LAMADABOTON = 0
    if len(args) > 0 :  # Si se llama desde un boton, desactivamos el mismo
        LLAMADABOTON = 1
        oBoton_Procesar = oFormularios.getByIndex(0).getByName('Boton_Procesar')
        oBoton_Procesar.Enabled = False
    Hojas = Libro.getSheets()
    Hoja1 = Libro.CurrentController.getActiveSheet()
    Hoja1.getCellRangeByName("A11").setValue(0)
    HojaComprobar = Hojas.getByName(Hoja1.getCellRangeByName("C2").String)
    HojaValores = Hojas.getByName(Hoja1.getCellRangeByName("F2").String)
    HojaAsignar = Hojas.getByName(Hoja1.getCellRangeByName("I2").String)
    HojaRellenar = Hojas.getByName(Hoja1.getCellRangeByName("L2").String)
    RangoComprobar = HojaComprobar.getCellRangeByName(Hoja1.getCellRangeByName("A4").String + Hoja1.getCellRangeByName("B4").String + ":" + Hoja1.getCellRangeByName("A4").String + Hoja1.getCellRangeByName("C4").String)
    RangoValores = HojaValores.getCellRangeByName(Hoja1.getCellRangeByName("D4").String + Hoja1.getCellRangeByName("E4").String + ":" + Hoja1.getCellRangeByName("D4").String + Hoja1.getCellRangeByName("F4").String)
    RangoAsignar = HojaAsignar.getCellRangeByName(Hoja1.getCellRangeByName("G4").String + Hoja1.getCellRangeByName("H4").String + ":" + Hoja1.getCellRangeByName("G4").String + Hoja1.getCellRangeByName("I4").String)
    Cadena =  Hoja1.getCellRangeByName("L4").String
    RangoRellenar = HojaRellenar.getCellRangeByName(Hoja1.getCellRangeByName("J4").String + Hoja1.getCellRangeByName("K4").String + ":" + Hoja1.getCellRangeByName("J4").String + Hoja1.getCellRangeByName("L4").String)
#
    lComprobar = len(RangoComprobar.getDataArray())
    lValores = len(RangoValores.getDataArray())
    lRellenar = len(RangoRellenar.getDataArray())
    tRellenar = RangoRellenar.getDataArray()
    iComprobar = 1
    while iComprobar <= lComprobar :
        cComprobar = RangoComprobar.getDataArray()[iComprobar - 1][0]
        iValores = 1
        while iValores <= lValores :
            if cComprobar == RangoValores.getDataArray()[iValores - 1][0] :
                RangoRellenar.getCellByPosition(0,iComprobar - 1).setString(RangoAsignar.getDataArray()[iValores - 1][0])
                iValores = lValores
            iValores += 1
        iComprobar += 1
    Datos = RangoComprobar.getDataArray()

    momento2 = time.clock()
    Hoja1.getCellRangeByName("A10").setString("Tiempo de Proceso:")
    Hoja1.getCellRangeByName("A11").setValue(momento2 - momento1)
    Hoja1.getCellRangeByName("L11").setString(repr(dir(Hoja1)))
    Hoja1.getCellRangeByName("L12").setString(oFormularios.getByIndex(0).getByName('Boton_Procesar').Name)
    Hoja1.getCellRangeByName("L13").setString(repr(oFormularios.getByName('Formulario').getByName('Boton_Procesar')))

    if LLAMADABOTON == 1 :
        oBoton_Procesar.Enabled = True
#
    return None
# lists the scripts, that shall be visible inside OOo. Can be omited, if
# all functions shall be visible, however here getNewString shall be surpressed
g_exportedScripts = BusquedaTabla,

Ok, solucionado, se puede acceder al formulario con

getDrawPage().getForms().

import time

def BusquedaTabla(*args): # Si se llama desde un botón, pasa el argumento del evento del objeto que lo llama
    # The context variable is of type XScriptContext and is available to
    # all BeanShell scripts executed by the Script Framework
    momento1 = time.clock()
    Libro = XSCRIPTCONTEXT.getDocument()
    oFormularios = Libro.getCurrentController().getActiveSheet().getDrawPage().getForms()
    # Comprobamos si el evento se llama desde un boton
    LAMADABOTON = 0
    if len(args) > 0 :  # Si se llama desde un boton, desactivamos el mismo
        LLAMADABOTON = 1
        oBoton_Procesar = oFormularios.getByIndex(0).getByName('Boton_Procesar')
        oBoton_Procesar.Enabled = False
    Hojas = Libro.getSheets()
    Hoja1 = Libro.CurrentController.getActiveSheet()
    Hoja1.getCellRangeByName("A11").setValue(0)
    HojaComprobar = Hojas.getByName(Hoja1.getCellRangeByName("C2").String)
    HojaValores = Hojas.getByName(Hoja1.getCellRangeByName("F2").String)
    HojaAsignar = Hojas.getByName(Hoja1.getCellRangeByName("I2").String)
    HojaRellenar = Hojas.getByName(Hoja1.getCellRangeByName("L2").String)
    RangoComprobar = HojaComprobar.getCellRangeByName(Hoja1.getCellRangeByName("A4").String + Hoja1.getCellRangeByName("B4").String + ":" + Hoja1.getCellRangeByName("A4").String + Hoja1.getCellRangeByName("C4").String)
    RangoValores = HojaValores.getCellRangeByName(Hoja1.getCellRangeByName("D4").String + Hoja1.getCellRangeByName("E4").String + ":" + Hoja1.getCellRangeByName("D4").String + Hoja1.getCellRangeByName("F4").String)
    RangoAsignar = HojaAsignar.getCellRangeByName(Hoja1.getCellRangeByName("G4").String + Hoja1.getCellRangeByName("H4").String + ":" + Hoja1.getCellRangeByName("G4").String + Hoja1.getCellRangeByName("I4").String)
    Cadena =  Hoja1.getCellRangeByName("L4").String
    RangoRellenar = HojaRellenar.getCellRangeByName(Hoja1.getCellRangeByName("J4").String + Hoja1.getCellRangeByName("K4").String + ":" + Hoja1.getCellRangeByName("J4").String + Hoja1.getCellRangeByName("L4").String)
#
    lComprobar = len(RangoComprobar.getDataArray())
    lValores = len(RangoValores.getDataArray())
    lRellenar = len(RangoRellenar.getDataArray())
    tRellenar = RangoRellenar.getDataArray()
    iComprobar = 1
    while iComprobar <= lComprobar :
        cComprobar = RangoComprobar.getDataArray()[iComprobar - 1][0]
        iValores = 1
        while iValores <= lValores :
            if cComprobar == RangoValores.getDataArray()[iValores - 1][0] :
                RangoRellenar.getCellByPosition(0,iComprobar - 1).setString(RangoAsignar.getDataArray()[iValores - 1][0])
                iValores = lValores
            iValores += 1
        iComprobar += 1
    Datos = RangoComprobar.getDataArray()

    momento2 = time.clock()
    Hoja1.getCellRangeByName("A10").setString("Tiempo de Proceso:")
    Hoja1.getCellRangeByName("A11").setValue(momento2 - momento1)
    Hoja1.getCellRangeByName("L11").setString(repr(dir(Hoja1)))
    Hoja1.getCellRangeByName("L12").setString(oFormularios.getByIndex(0).getByName('Boton_Procesar').Name)
    Hoja1.getCellRangeByName("L13").setString(repr(oFormularios.getByName('Formulario').getByName('Boton_Procesar')))

    if LLAMADABOTON == 1 :
        oBoton_Procesar.Enabled = True
#
    return None
# lists the scripts, that shall be visible inside OOo. Can be omited, if
# all functions shall be visible, however here getNewString shall be surpressed
g_exportedScripts = BusquedaTabla,

Ahora el problema es que el botón se desactiva y se activa, cuando termina el proceso, no durante el mismo, ¿a alguien se le ocurre algo para forzar que lo haga durante el procedo?

     Gracias.