Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Creación de objetos OLE de Word en VFP6 y VFP7
Message
From
05/06/2003 07:18:59
 
 
To
All
General information
Forum:
Visual FoxPro
Category:
Classes - VCX
Title:
Creación de objetos OLE de Word en VFP6 y VFP7
Miscellaneous
Thread ID:
00796564
Message ID:
00796564
Views:
100
Me estoy encontrando con un problema al migrar una aplicación de "VFP6 SP5 Spanish" a "VFP7 SP1 Spanish" en un tema que creo no debería tener problemas.

Para mostrar un documento Word en miniatura, genero por código una clase, le hago SET PROCEDURE TO MiNuevaClase.PRG e instancio esa misma clase.

En VFP6 esto funcionaba sin problemas, y de hecho sigue funcionando. En VFP7 me solicita la ventana de dialogo para que le indique el objeto OLE del cual quiero crear la clase (el que se muestra al insertar en un formulario un objeto OLE vinculado), como si no comprendiera cual es la clase que solicito.

El código que me permite hacer esto en VFP6 y que da problemas en 7 es Generar.PRG. (AL FINAL DEL MENSAJE)
La clase generada con este código para un archivo de Word dado es miclase.PRG. (AL FINAL DEL MENSAJE)
Ambos archivos los adjunto.

Además de esto, la versión con VFP6 fue generada desde un Windows 2000 Profesional que tenía instalado Office 2000, aunque sigue funcionando ahora que es un Windows XP Profesional y tiene instalado Office 2000, si bien ha tenido Word XP.

También agradecería cualquier otra solución que pudieran dar para mostrar múltiples documentos Word (10) en una ventana de VFP.

Saludos.
José Luis.
* GENERAR.PRG ---

PARAMETERS m.orden,m.fichero,objeto,m.miclase

LOCAL m.nomprg,m.nomfxp

m.miclase2="oledoc"+ALLTRIM(STR(m.orden))
aux=".foledoc"+ALLTRIM(STR(m.orden))		  
&aux=SYS(3)+".prg"
m.nomprg=&aux

aux="DEFINE CLASS "+m.miclase2+" AS OLEControl"+chr(13)+;
    "DocumentFile="+chr(34)+m.fichero+chr(34)+CHR(13)+; && Este archivo debe existir.         	
    "Top=0"+CHR(13)+;
    "OleClass="+chr(34)+m.miclase+chr(34)+CHR(13)+;
    "OleTypeAllowed=0"+CHR(13)+;
    CHR(13)+;
    "PROCEDURE Gotfocus"+CHR(13)+;
    "this.parent.click()"+CHR(13)+;  
    CHR(13)+; 
    "PROCEDURE DragOver"+CHR(13)+;
    "LPARAMETERS oSource, nXCoord, nYCoord, nState"+CHR(13)+;  
    "this.parent.DragOver(oSource, nXCoord, nYCoord, nState)"+CHR(13)+;
    CHR(13)+;
    "PROCEDURE Move"+CHR(13)+;
    "  IF this.top=1"+CHR(13)+;
    "    This.parent.mousemove(1)"+CHR(13)+;
    "  ENDIF"+CHR(13)+;        
	"ENDDEFINE"+CHR(13)+chr(13)
	
aux1=SUBSTR(m.nomprg,1,LEN(m.nomprg)-3)+"fxp"
IF FILE(m.nomprg)  
  RELEASE PROCEDURE (aux1)  
  DELETE FILE (m.nomprg)  
  DELETE FILE (aux1)
ENDIF

aux1=".foledoc"+ALLTRIM(STR(m.orden))		  
&aux1=SYS(3)+".prg"
m.nomprg=&aux1


m.dev=STRTOFILE(aux,m.nomprg,.F.)
COMPILE (m.nomprg)
SET PROCEDURE TO (m.nomprg) ADDITIVE

WITH objeto  
  .addobject("oledoc",m.miclase2)
  m.elcontrol=".oledoc"
  aux=m.elcontrol+".Top"
  &aux=1
  aux=m.elcontrol+".Left"
  &aux=1
  aux=m.elcontrol+".Height"
  &aux= 105  
  aux=m.elcontrol+".Width"
  &aux = 74
  aux=m.elcontrol+".Stretch"
  &aux= 1
  aux=m.elcontrol+".Sizable"
  &aux = .F.  
  aux=m.elcontrol+".AutoActivate"
  &aux = 2 
  aux=m.elcontrol+".Enabled"
  &aux = .T.
  .parent.nomprg = SYS(5)+SYS(2003)+"\"+m.nomprg
  aux=m.elcontrol+".Visible"
  &aux = .T.   
ENDWITH


* FIN GENERAR.PRG ---
* miclase.PRG ----

DEFINE CLASS oledoc2 AS OLEControl
DocumentFile="F:\BB\FWTN\JJAPP\ESCANER\IMAGENES\EXP.002\1\00000037.DOC"
Top=0
OleClass="WordDocument"
OleTypeAllowed=0

PROCEDURE Gotfocus
this.parent.click()

PROCEDURE DragOver
LPARAMETERS oSource, nXCoord, nYCoord, nState
this.parent.DragOver(oSource, nXCoord, nYCoord, nState)

PROCEDURE Move
  IF this.top=1
    This.parent.mousemove(1)
  ENDIF
ENDDEFINE


* FIN miclase.PRG ---

Quidquid latine dictum sit, altum sonatur

Next
Reply
Map
View

Click here to load this message in the networking platform