Fuentes con Office

Fuentes con Office

Postby antolin » Mon Nov 07, 2011 12:54 pm

Hola Amigos

Estoy intentando realizar unos informes con Office Word desde mi apicción. Todo bien, se habre el Office, le cambio los márgenes al documento y puedo escribir en el. El problema surge cuando quiero cambiar el tipo de letra. No lo consigo: Esto es lo que hago, pero no me funciona.

Tengo Win32Ole del 2006
Code: Select all  Expand view

FUNCTION ImprDocs(oDlg,aVar,nCl)
   LOCAL oWord := TOleAuto():New("Word.Application")
   LOCAL oDoc  := oWord:Get("Documents")
   LOCAL oTexto,oPageSetup
   LOCAL oActiveDoc,oSelection
   *
   oDoc:Invoke( "Add" )
   oActiveDoc := oWord:Get("ActiveDocument")
   oTexto     := oWord:Get("Selection")
   oSelection := oActiveDoc
   *
   oPageSetup := oActiveDoc:Get("PageSetup")
   oPageSetup:LeftMargin   := "1,90"
   oPageSetup:RightMargin  := "1,90"
   oPageSetup:TopMargin    := "2.54"
   oPageSetup:BottomMargin := "2,00"
   RELEASE oPageSetup
   *
Escribe(oTexto,"PRUEBA 1"+CHR(13))
Escribe(oTexto,"PRUEBA 2","Time New Roman",9,.T.,,,CLR_HRED)
   *
   oActiveDoc:Saved := .T.
   oWord:Visible    := .T.
   oWord:Set("WindowState",1)
   *
   RELEASE oDoc
   RELEASE oTexto
   RELEASE oActiveDoc
   RELEASE oSelection
   *
   oWord  := NIL
   SysRefresh()
   *
RETURN NIL
*
FUNCTION Escribe(oTexto,cTexto,cFont,nSize,lBold,lItalic,lUnder,nColor)
    LOCAL oFont := oTexto:Get("Font")

    DEFAULT cFont   := "Arial"  , ;
        nSize   := 9    , ;
        lBold   := .F.  , ;
        lItalic := .F.  , ;
        lUnder  := .F.
    *
    oFont:Set( "Name", cFont )
    oFont:Set( "Size", nSize )
    IF lBold
       oFont:Set( "Bold", .T. )
    ENDIF
    IF lItalic
       oFont:Set( "Italic", .T. )
    ENDIF
    IF lUnder
       oFont:Set( "Underline", .T. )
    ENDIF
    IF nColor # NIL
       oFont:Set( "Color", nColor )
    ENDIF
    *
    oTexto:Invoke( "TypeText", cTexto )
    *
    oFont:Invoke( "Reset" )
    RELEASE oFont
RETURN NIL
 


Intento asignarle un FONT a oWord con:
Code: Select all  Expand view
DEFINE FONT oFont NAME "Arial" SIZE 0,-9 OF oWord

Pero me sale el error: TOLEAUTO:NLOGPIXELY
que, según parece, donde realmente ocurre es durante la creación del objeto TFONT cuando intenta hacer:
Code: Select all  Expand view

if oDevice !nil
   ::nImpHeight = ( oDevice:nLogicPixelY() / 72 ) * ::nInpHeight
endif
 

Pues TOLEAUTO, que en este caso es el oDevice, no tiene ese Método.

No se como solucionarlo.

Ayuda Porfa

Gracias...
Peaaaaaso de foro...
FWH 2007 - xHarbour - BCC55
antolin
 
Posts: 498
Joined: Thu May 10, 2007 8:30 pm
Location: Sevilla

Re: Fuentes con Office

Postby antolin » Tue Nov 08, 2011 11:39 am

Ok Solucionado :lol:
Peaaaaaso de foro...
FWH 2007 - xHarbour - BCC55
antolin
 
Posts: 498
Joined: Thu May 10, 2007 8:30 pm
Location: Sevilla

Re: Fuentes con Office

Postby horacio » Tue Nov 08, 2011 2:47 pm

Y cual era la solución ???
Saludos
horacio
 
Posts: 1363
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

Re: Fuentes con Office

Postby antolin » Fri Nov 11, 2011 10:14 am

Era más sencillo de lo que eesperaba, Parece que no le gustaba que sacaramos el objeto oFont.

En lugar de:
Code: Select all  Expand view

oFont := oTexto:Get("Font")
oFont:Set("Name","Arail")
oFont:Set("Bol",.T.)
Etc...
 

Simplemente:
Code: Select all  Expand view

oTexto:Font:Name := "Arial"
oTexto:Font:Bold := .T.
Etc...

Qué tontería ¿verdad?

Saludos
Peaaaaaso de foro...
FWH 2007 - xHarbour - BCC55
antolin
 
Posts: 498
Joined: Thu May 10, 2007 8:30 pm
Location: Sevilla

Re: Fuentes con Office

Postby hmpaquito » Fri Nov 11, 2011 11:01 am

Antolín,

Sí es una tontería, pero hasta dar con la "tecla" hay que dejarse la piel.
De esas "tonterías" he tenido tropecientas mil con Excel... no te digo ya con Calc...
Para trabajar con OLE Excel o Word hay que tener al lado un manual de tonterías.

Siempre me he preguntado, ¿ de quién es la culpa ? ¿ de Excel o de (x)Harbour ? Sospecho de (x)Harbour. De Harbour, uso la ver 2.0, sé que se hizo hace unos meses una revisión buenísima, ver. 3.0, del tema OLE.

Saludos
hmpaquito
 
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm

Re: Fuentes con Office

Postby antolin » Fri Nov 11, 2011 11:37 am

Ya me gustaría tener un manual de esos, hmpaquito, pues me estoy dejando los ojos en el ordenador para crear el documentito de las narices.

Por ahora ya he consegiudo crear una tabla, formatearla, dezplazarla y esribir en ella. Todo a base de cabezasos. Pero ahora viene lo mejor, tengo que poner una tablita en la cabecera con unlogotipo dentro, después el pie con el número de página centrado y que realmente indique el número de página..

Y para estudio y consulta no tengo más que el MSND de internet, el TWORD.PRG de 2006 y un monton de páginas web de VisualBasid que hay que traducir a xHarbour a golpe de intuicición. Por ejemplo, he tenido que adivinar que wbParagraphAlignmentLeft vale y que wbVerticalAlignment es 1. Y constantes que empiezan por 'wb' hay miles, pero no he encontrado ni un puñetero listado de wb's.

O sea que me queda aún un largo trecho

Saludos
Peaaaaaso de foro...
FWH 2007 - xHarbour - BCC55
antolin
 
Posts: 498
Joined: Thu May 10, 2007 8:30 pm
Location: Sevilla

Re: Fuentes con Office

Postby hmpaquito » Fri Nov 11, 2011 12:07 pm

Antolín,

Un truquito, del manual "De tonterías y otras lindezas OLE", que yo he utilizado algunas veces, por si te sirve, yo lo he utilizado con Excel, es NO crear el documento desde cero, sino que diseñar MANUALMENTE un documento "base" a modo de plantilla y sobre ese documento "base" añadirle lo que falta; incluso se puede tener varios documentos "base" que se adapten mejor a las condiciones de salida, y reincluso quizá será mejor borrar, desde el programa, lo que pueda ser "sobrante" que añadirlo desde cero.
Esto tiene también la ventaja de que al estar creados muchos elementos del documento, la velocidad en realizar la operacion es mayor.

Saludos
hmpaquito
 
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm

Re: Fuentes con Office

Postby antolin » Fri Nov 11, 2011 1:04 pm

hmpaquito

Eso ya lo hice una vez, pero me he puesto el reto de crearlo desde el inicio y así aprender. Si al final no lo logro optará por la plantilla

Gracias de todas formas
Peaaaaaso de foro...
FWH 2007 - xHarbour - BCC55
antolin
 
Posts: 498
Joined: Thu May 10, 2007 8:30 pm
Location: Sevilla

Re: Fuentes con Office

Postby antolin » Thu Nov 17, 2011 12:36 pm

Hola amigos

Lo he conseguido. He escrito en la cabecera (Header) y en el pie (Footer). En la cabecera he puesto una tabla en la que he insertado los logotipos (ya con tamaño definitivo), y en el pie he centrado el numero de pagina actual entre dos guiones (como a mi me gusta).

Esto es más o menmos lo que he hecho:
Code: Select all  Expand view
FUNCTION CabyPie(oActiveDoc)
   LOCAL oHead  := oActiveDoc:Sections[1]:Headers[1]    // OBJETO CABECERA
   LOCAL oFoot  := oActiveDoc:Sections[1]:Footers[1]    // OBJETO PIE
   LOCAL oRange := oHead:Range()
   LOCAL oTable := oHead:Tables:Add(oRange,3,3)     // AÑADO TABLA 3X3


   SysRefresh()
   oHead:Font:Size := 8 // CAMBIO TAMÑAO FUENTE
   *
   WITH OBJECT oTable
    :Columns[1]:Width = "4,37"  // ANCHO COLUMNAS
    :Columns[2]:Width = "8,87"
    :Columns[3]:Width = "4,37"
    :Cell(1,3):Text := "TEXTO PRUBEAS"  // TEXTO EN CELDAS
    :Cell(2,1):Text := "MAS TEXTO"
    ...
    :Cell(1,3):VerticalAlignment := 1   // ALINEACION VERTICAL AL CENTRO
    :Cell(2,1):VerticalAlignment := 1
    ...
    :Cell(1,1):ParagraphFormat:Alignment := 1   // ALIN. HORIZ. AL CENTRO
    :Cell(1,3):ParagraphFormat:Alignment := 1
    :Cell(2,1):ParagraphFormat:Alignment := 1
    :Cell(3,1):ParagraphFormat:Alignment := 1
    :Cell(3,3):ParagraphFormat:Alignment := 1
    ...
   END

   // AÑADO GRAFICOS A CELDAS
   // YA TIENEN EL TAMAÑO ADECUADO
   oTable:Cell(1,1):Range:InlineShapes:AddPicture( cDir+"CabMsW1.JPG" )
   oTable:Cell(3,1):Range:InlineShapes:AddPicture( cDir+"CabMsW2.JPGb" )
   oTable:Cell(3,3):Range:InlineShapes:AddPicture( cDir+"CabMsW3.JPG" )

   oFoot:ParagraphFormat:Alignment := 1 // ALINEACION DEL PIE AL CENTRO
   oFoot:Text := "-  -"         // GUIONES PARA NUMERO DE PAGINA
   oRange := oFoot:Range
   oRange:Collapse(1)       // PUNTO DE INSERCION AL PRINCIPIO DEL RANGE
   oRange:Move(2)       // LO MUEVO DOS PUESTO A LA DERCHA
   oAct:Fields:Add(oRange,33)   // AÑADO EL NUMERO DE PAGINA ACTUAL
   oRange:Collapse(0)       // PUNTO DE INSERCION AL FINAL POR SI ACASO

   RELEASE oHead
   RELEASE oTable
   RELEASE oFoot
   RELEASE oRange
RETURN NIL
 

Espero que le sirva a alguien.

Saludos
Peaaaaaso de foro...
FWH 2007 - xHarbour - BCC55
antolin
 
Posts: 498
Joined: Thu May 10, 2007 8:30 pm
Location: Sevilla

Re: Fuentes con Office

Postby hmpaquito » Thu Nov 17, 2011 1:05 pm

antolín,

Enhorabuena por el éxito !

Se agradece el código. La verdad es que ahora mismo no me hace falta, pero ¿ quien sabe si en un futuro... ?

Saludos
hmpaquito
 
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 54 guests