A vueltas con TWORD

A vueltas con TWORD

Postby ander7319 » Thu Feb 14, 2013 9:48 am

Estoy adaptando un programa a la última versión de Harbour y FWH. El programa original elaboraba en word cartas desde cero, conteniendo imágenes, cuadros de texto, etc.
¿Alguien tiene funcionando esta con HARBOUR 3? A mi me está fallando el siguiente método:

Code: Select all  Expand view
METHOD SetMainDoc() CLASS TWord
       local oWindow := ::oActiveDoc:Get( "ActiveWindow" )
       local oView   := oWindow:Get( "View")
       oView:Set( "SeekView" , 0 )
       ::oSelection := ::oActiveDoc
       release oWindow, oView
       RETURN nil


Arrojando este error:

Code: Select all  Expand view
  Compiler version: Harbour 3.2.0dev (Rev. 18449)
   FiveWin  Version: FWH 12.12
   Windows version: 5.1, Build 2600 Service Pack 3

   Time from start: 0 hours 0 mins 18 secs
   Error occurred at: 14.02.2013, 09:48:46
   Error description: (DOS Error -2147352572) WINOLE/1007  Error de argumento: SET
   Args:
     [   1] = C   SeekView
     [   2] = N   0

Stack Calls
===========
   Called from:  => TOLEAUTO:SET( 0 )
   Called from: .\source\classes\TWORDHB.PRG => TWORD:SETMAINDOC( 792 )


Y la verdad... no sé cómo solucionarlo. ¡¡¡¡SOCORRO!!!
FWH 12.12 HB 3.2 BCC 5.82
User avatar
ander7319
 
Posts: 21
Joined: Tue Feb 10, 2009 12:47 pm

Re: A vueltas con TWORD

Postby mastintin » Thu Feb 14, 2013 10:52 am

a mi me funciona :
Code: Select all  Expand view


METHOD SetMainDoc() CLASS TWord
       ::oActiveDoc:ActiveWindow:View:SeekView:= 0
       ::oSelection := ::oActiveDoc
  return nil

 
User avatar
mastintin
 
Posts: 1516
Joined: Thu May 27, 2010 2:06 pm

Re: A vueltas con TWORD

Postby ander7319 » Thu Feb 14, 2013 4:24 pm

Gracias. Sustituyendo el Metodo tal como lo tenía yo por el que tú has mencionado... a mi tampoco me falla... ahí. Ahora me falla el médodo WRITE en el argumento SIZE. Y esto por ahora... que quedan 12 llamadas distintas más a la clase.

Sería posible que me dijeses dónde puedo obtener una versión correcta de la clase TWORD (no la he encontrado en el foro) o si no es molestia me podrías enviar una copia de la que tú manejas a mi dirección de email: a.perez@barrilero.es

Muchas gracias de antemano por la enorme ayuda, y un saludo.
FWH 12.12 HB 3.2 BCC 5.82
User avatar
ander7319
 
Posts: 21
Joined: Tue Feb 10, 2009 12:47 pm

Re: A vueltas con TWORD

Postby ander7319 » Fri Feb 15, 2013 9:02 am

Yo creo que ya es la última llamada a TWORD que me queda por corregir, pero estoy bloqueado o ya le he hecho tantas pruebas que no sé ni lo que hago, no sé. ¿Alguna sugerencia?

Esta es la llamada al método
Code: Select all  Expand view
oWord:TextBox( 03.10, 16.50, 03.90, 19.20, aText[ni][1], oFnt[2], , ,1, {,,.T.,,,,,},{,,,.T.,,},,)


Este es el código del método que yo tengo, la versión que está en el foro

Code: Select all  Expand view
METHOD TextBox( nTop, nLeft, nBottom, nRight, cTexto, oFuente, nclrtext, nClrBack, nJustify, afondo, alinea, lvertadjust, norientacion) CLASS TWord
       local oShapes,oCuadro,oFill,oLinea, oFontC, oText, oCuadroText
       local nPad := 0, n, oWrap, nheighttext,;
             lnocabe := .f.,  nheightbox:= 0

       DEFAULT nTop := 0, nLeft := 0, nBottom := 10, nRight := 10,;
               cTexto := ' ', oFuente := TFont():New(),;
               nClrText := nRGB(0,0,0), nJustify := 0,;
               afondo := {}, alinea := {}, lvertadjust := .f.,;
               norientacion := 1

       nheighttext := oFuente:nHeight

       if norientacion > 3
          norientacion := 1
       endif
       do case
          case nJustify = 1
               nPad := 2
          case nJustify = 2
               nPad := 1
          case nJustify = 6
               nPad := 0
       endcase
       if ::lsetcm
          nTop := nTop*28.35
          nLeft := nLeft*28.35
          nBottom := nBottom*28.35
          nRight := nRight*28.35
       endif

       oShapes     := ::oSelection:Get( "Shapes" )
       oCuadro     := oShapes:Invoke( "AddTextbox", norientacion,INT(nLeft),INT(nTop),INT(nRight-nLeft),INT(nBottom-nTop) )
       oFill       := oCuadro:Get( "Fill" )

       oCuadro:Set( 'RelativeHorizontalPosition',1)
       oCuadro:Set( 'RelativeVerticalPosition',1)

       //Fill
       for n = 1 to len(afondo)
           do case
              case n = 1 .and. afondo[n] <> NIL
                   oFillColor  := oFill:Get( "ForeColor")
                   oFillColor:Set( 'RGB', afondo[1] )
              case n = 2 .and. afondo[n] <> NIL
                   oFillColor  := oFill:Get( "BackColor")
                   oFillColor:Set( 'RGB', afondo[2] )
              case n = 3 .and. afondo[n] <> NIL
                   oFill:Set( 'Transparency', afondo[3])
              case n = 4 .and. afondo[n] <> NIL
                   oFill:Invoke( 'TwoColorGradient', afondo[4], afondo[5] )
              case n = 6 .and. afondo[n] <> NIL
                   oFill:Invoke( 'Patterned', afondo[6] )
              case n = 7 .and. afondo[n] <> NIL
                   oFill:Invoke(  'PresetTextured', afondo[7] )
              case n = 8 .and. afondo[n] <> NIL
                   oFill:Invoke(  'UserTextured' , afondo[8] )
           endcase
       next n

       //Linea de contorno
       oLinea      := oCuadro:Get(  "Line" )

       for n = 1 to len(alinea)
           do case
              case n = 1
                   oLinea:Set( "Weight", alinea[1] )
              case n = 2
                   oLinea:Set(  "ForeColor", alinea[2] )
              case n = 3
                   oLinea:Set(  "BackColor", alinea[3] )
              case n = 4
                   oLinea:Set(  "Transparency", alinea[4])
              case n = 5
                   oLinea:Set(  "DashStyle", alinea[5] )
              case n = 5
                   oLinea:Set(  "Style", alineas[6] )
           endcase
       next n


       oCuadroText := oCuadro:Get( "TextFrame" )
       oText       := oCuadroText:Get( "TextRange" )
       oFontC      := oText:Get( "Font")
       oFontC:Set( "Name"  , oFuente:cFaceName )
       oFontC:Set( "Size"  , INT(oFuente:nHeight)  )
       oFontC:Set( "Bold"  , oFuente:lBold     )
       oFontC:Set( "Color" , nclrtext )
       oText:Set(  'HighlightColorIndex', nClrBack )
       oText:Set(  "Text", cTexto )
       oParagraph  := oText:Get( "ParagraphFormat")
     oParagraph:Set( "Alignment", nPad )


       if lvertadjust
          nheightbox := 0
          oCuadro:Set( 'Height', nheightbox)
          ::oActiveDoc:Invoke( 'ComputeStatistics',2,.t.)
          lnocabe := oCuadroText:Get( 'Overflowing')
          nheightbox := nheightbox + nHeighttext //+ OleGetProperty(oParagraph,'SpaceBefore')
          do whil lnocabe = .t. .and. nheightbox <= nBottom - nTop
             oCuadro:Set( 'Height', nheightbox)
             oText:Set( "Text", cTexto )
             ::oActiveDoc:Invoke( 'ComputeStatistics',2,.t.)
             lnocabe := oCuadroText:Get( 'Overflowing')
             nheightbox := nheightbox + nHeighttext //+ OleGetProperty(oParagraph,'SpaceBefore')
          enddo

       else
          ::oActiveDoc:Invoke( 'ComputeStatistics',2,.t.)
          lnocabe := oCuadroText:Get( 'Overflowing')
          nheightbox := nBottom
       endif

       lcorta := lnocabe
       ctexto2 := ctexto
       do whil lcorta .and. !empty(ctexto2)
          ctexto2 := Dellastword(ctexto2)
          oText:Set( 'Text', ctexto2)
          ::oActiveDoc:Invoke('ComputeStatistics',2,.t.)
          lcorta := oCuadroText:Get( 'Overflowing')
       enddo

       ::ctextoverflow := strtran(ctexto, ctexto2, '')
       ::loverflowing := lnocabe
       ::oLastSay := otext

       release oParagraph, OLinea, oFillColor, oFill, oFontC, oText,oCuadroText, oCuadro

       if ::lsetcm
             ::nlastrow := nBottom/28.35
       else
             ::nlastrow := nBottom
       endif

       RETURN Nil


No hay manera, el argumento en "Transparency" da error
FWH 12.12 HB 3.2 BCC 5.82
User avatar
ander7319
 
Posts: 21
Joined: Tue Feb 10, 2009 12:47 pm

Re: A vueltas con TWORD

Postby mastintin » Fri Feb 15, 2013 9:59 am

Mira cambiandolo asi en cada llamada de 'Transparency' :
Code: Select all  Expand view


 case n = 3 .and. afondo[n] <> NIL
    //       oFill:Set( 'Transparency', afondo[3])
     oFill:Transparency := afondo[3]
 


Saludos.
User avatar
mastintin
 
Posts: 1516
Joined: Thu May 27, 2010 2:06 pm

Re: A vueltas con TWORD

Postby ander7319 » Sat Feb 16, 2013 9:06 am

Muchas gracias.

Esta vez el problema no era ese o al meno no sólo ese.... aunque ya lo he resuelto por el sistema de "prueba y error"

A TRANSPARENCY no se le debe pasar (ahora?) un valor lógico sino un número. Pasando un 1 funciona perfectamente. Gracias de nuevo

Code: Select all  Expand view
oWord:TextBox( 03.10, 16.50, 03.90, 19.20, aText[ni][1], oFnt[2], , ,1, {,,1,,,,,},{,,,1,,},,)


Un Saludo y gracias.
FWH 12.12 HB 3.2 BCC 5.82
User avatar
ander7319
 
Posts: 21
Joined: Tue Feb 10, 2009 12:47 pm

Re: A vueltas con TWORD

Postby cnavarro » Sat Feb 16, 2013 1:09 pm

Buenos dias
Estoy usando FWH 1203 y Harbour 3.2 (31/05/2012) con BCC582
Hasta ahora usaba la Clase TOleauto.Prg y Ole2.c para realizar llamadas a Ole, pero si he entendido bien Harbour ya lo contiene, antes con la lib Hbole, y ahora HbWin (de hecho la libreria hbole ya no aparece en esa versión), por lo que he quitado esos fuentes para probar.
Cuando intento compilar, bien, pero a la hora del linkado, obtengo el siguiente error:
Error: Unresolved external '_HB_FUN_OLEUNINITIALIZE' referenced from C:\VERCE43\APLI\TWORD.OBJ
Qué estoy haciendo mal?
Gracias

Investigando........

Ya he visto la llamada a dicha funcion OleUninitialize() en el método End(), y también en el programa Olecore.c de Harbour, pero no entiendo por qué da error de linkado
Gracias
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cnavarro
 
Posts: 6500
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: A vueltas con TWORD

Postby Silvio.Falconi » Sun Feb 17, 2013 9:29 pm

Sorry where is tword ? I not found it on fwh...
Since from 1991/1992 ( fw for clipper Rel. 14.4 - Momos)
I use : FiveWin for Harbour November 2023 - January 2024 - Harbour 3.2.0dev (harbour_bcc770_32_20240309) - Bcc7.70 - xMate ver. 1.15.3 - PellesC - mail: silvio[dot]falconi[at]gmail[dot]com
User avatar
Silvio.Falconi
 
Posts: 6774
Joined: Thu Oct 18, 2012 7:17 pm

Re: A vueltas con TWORD

Postby cnavarro » Sun Feb 17, 2013 10:31 pm

Silvio.Falconi wrote:Sorry where is tword ? I not found it on fwh...



viewtopic.php?f=17&t=6849

Saludos
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cnavarro
 
Posts: 6500
Joined: Wed Feb 15, 2012 8:25 pm
Location: España


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot], nageswaragunupudi and 83 guests