MiniGUI

Ejemplo de ADO para OpenOffice Calc en Harbour MiniGUI

STATIC FUNCTION Lis_OpenOffice()
    local oServiceManager, oDesktop, oDocument, oSchedule, oSheet, oCell, oColumns, oColumn

    Crear_fichero()
    CURSORWAIT()

    // inicializa
    oServiceManager := TOleAuto():New('com.sun.star.ServiceManager')
    oDesktop := oServiceManager:createInstance('com.sun.star.frame.Desktop')
    IF oDesktop == NIL
        MsgStop('OpenOffice Calc no está disponible', 'error')
        RETURN NIL
    ENDIF

    oDocument := oDesktop:loadComponentFromURL('private:factory/scalc', '_blank', 0, {})

    // tomar hoja
    oSchedule := oDocument:GetSheets()
    // tomar primera hoja por nombre
    oSheet := oSchedule:GetByName('Hoja1')
    // o por índice
    oSheet := oSchedule:GetByIndex(0)

    oSheet:getCellByPosition(0,0):SetString('Suizo Pruebas')
    oSheet:getCellByPosition(0,1):SetString(W_Imp1.L_Version1.value)
    oSheet:getCellByPosition(0,2):SetString(W_Imp1.L_Version2.value)
    oSheet:getCellByPosition(0,3):SetString(W_Imp1.L_Version3.value)
    oSheet:getCellByPosition(0,4):SetString(W_Imp1.L_Version4.value)

    LIN := 6

    oSheet:getCellByPosition(0,LIN):SetString('Código')
    oSheet:getCellByPosition(1,LIN):SetString('1º plato')
    oSheet:getCellByPosition(2,LIN):SetString('2º plato')
    oSheet:getCellByPosition(3,LIN):SetString('Postre')
    oSheet:getCellRangeByPosition(0,LIN,0,LIN):HoriJustify := 3
    oSheet:getCellRangeByPosition(0,LIN,3,LIN):CharWeight := 150 // NEGRITA
    aMiColor := {255,255,150} // AMARILLO PÁLIDO
    oSheet:getCellRangeByPosition(0,LIN,3,LIN):CellBackColor := RGB(aMiColor[3], aMiColor[2], aMiColor[1])

    LIN++

    SELECT MENUS
    GO TOP
    DO WHILE .NOT. EOF()
        DO EVENTS
        oSheet:getCellByPosition(0,LIN):SetValue(CodMenu)
        oSheet:getCellByPosition(1,LIN):SetString(Comida1)
        oSheet:getCellByPosition(2,LIN):SetString(Comida2)
        oSheet:getCellByPosition(3,LIN):SetString(Comida3)
        oSheet:getCellRangeByPosition(0,LIN,0,LIN):NumberFormat := 4 // #.##0,00

        LIN++
        SKIP
    ENDDO

    oColumns := oSheet:getColumns()
    oColumns:getByIndex(1):setPropertyValue('OptimalWidth', .T.)
    oColumns:getByIndex(2):setPropertyValue('OptimalWidth', .T.)

    CURSORARROW()
    RETURN NIL
END FUNCTION


STATIC FUNCTION Crear_fichero()
    IF .NOT. FILE('MENUS.DBF')
        aArq := {}
        AAdd(aArq, { 'CODMENU' , 'N', 10, 0 })
        AAdd(aArq, { 'COMIDA1' , 'C', 30, 0 })
        AAdd(aArq, { 'COMIDA2' , 'C', 30, 0 })
        AAdd(aArq, { 'COMIDA3' , 'C', 30, 0 })
        DBCREATE('MENUS', aArq)
        USE MENUS
        FOR N := 1 TO 100
            APPEND BLANK
            REPLACE CODMENU WITH N
            REPLACE COMIDA1 WITH 'PRIMER PLATO ' + LTRIM(STR(N))
            REPLACE COMIDA2 WITH 'SEGUNDO PLATO ' + LTRIM(STR(N))
            REPLACE COMIDA3 WITH 'POSTRE ' + LTRIM(STR(N))
        NEXT
    ELSE
        USE MENUS
    ENDIF
    RETURN NIL
END FUNCTION