MiniGUI
Ejemplo de ADO para OpenOffice Writer en Harbour MiniGUI
STATIC FUNCTION Lis_OpenOffice()
local oServiceManager, oDesktop, oDocument, oCursor
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/swriter", "_blank", 0, {})
oCursor := oDocument:Text:CreateTextCursor()
oCursor:CharFontName := "Courier"
oCursor:CharHeight := 10
oCursor:CharWeight := 150
oCursor:CharHeight := 16
oDocument:Text:InsertString(oCursor, "Suizo Pruebas" + CHR(13), .F.)
oCursor:CharHeight := 10
oDocument:Text:InsertString(oCursor, W_Imp1.L_Version1.value + CHR(13), .F.)
oDocument:Text:InsertString(oCursor, W_Imp1.L_Version2.value + CHR(13), .F.)
oDocument:Text:InsertString(oCursor, W_Imp1.L_Version3.value + CHR(13), .F.)
oDocument:Text:InsertString(oCursor, W_Imp1.L_Version4.value + CHR(13), .F.)
LIN := 6
oDocument:Text:InsertString(oCursor, "Código" + CHR(13), .F.)
oDocument:Text:InsertString(oCursor, "1º plato" + CHR(13), .F.)
oDocument:Text:InsertString(oCursor, "2º plato" + CHR(13), .F.)
oDocument:Text:InsertString(oCursor, "Postre" + CHR(13), .F.)
SELECT MENUS
GO TOP
LIN := 1
DO WHILE .NOT. EOF()
DO EVENTS
IF LIN == 50
InsertPageBreak(oCursor)
ENDIF
oDocument:Text:InsertString(oCursor, CodMenu + CHR(13), .F.)
oDocument:Text:InsertString(oCursor, Comida1 + CHR(13), .F.)
oDocument:Text:InsertString(oCursor, Comida2 + CHR(13), .F.)
oDocument:Text:InsertString(oCursor, Comida3 + CHR(13), .F.)
LIN++
SKIP
ENDDO
CURSORARROW()
RETURN NIL
END FUNCTION
Function InsertPageBreak(oCursor)
Local oText := oCursor:getText()
oText:insertControlCharacter(oCursor, 0, .F.) // 0 - OOOtextControlCharacterPARAGRAPH_BREAK
oCursor:BreakType := 4 // 4 - OOOstyleBreakTypePAGE_BEFORE
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