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