Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Servers (https://www.clubdelphi.com/foros/forumdisplay.php?f=9)
-   -   Modificar margenes en Word (https://www.clubdelphi.com/foros/showthread.php?t=24908)

jzk 06-09-2005 09:51:35

Modificar margenes en Word
 
Hola a tod@s,

Estoy intentando poder bajar los márgenes de un documento Word pero no encuentro la manera. Rebuscando, rebuscando, he encontrado lo siguiente:

Código:

        WinWord.Selection.PageSetup.TopMargin
pero me da el siguiente error :

Cita:

exception EOleException with message "TopMargin" no es ningún método
Hasta ahora siempre me había valido de las macros de Word para ver como ejecutar ciertos comando en Delphi, pero esta vez no encuentro la solución.

¿Sabeís como hacerlo?, gracias.

roman 06-09-2005 15:39:35

Creo que en lugar de Selection debe ser Section. A mi me ha funcionado con

Document.TopMargin

ó

Document.Sections.TopMargin

Y si deseas aplicarlo a una sección específica sería

Document.Sections.Item(NumSeccion).TopMargin

Aquí Document es un OleVariant que apunta al documento:

Código Delphi [-]
uses
  ComObj;

var
  WordApp: OleVariant;
  Document: OleVariant;

begin
  WordApp := CreateOleObject('word.application.9');
  Document := WordApp.Documents.Open('archivo.doc');
end;

// Saludos

jzk 07-09-2005 12:42:36

Lo primero darte las gracias por el tiempo empleado.
He seguido todos los pasos que me indicas pero lo único que obtengo es otro tipo de error:

Cita:

Exception EOleError with message 'Method' Topmargin' not supported by automation object'
Hasta ahora la única manera que he encontrado ha sido utilizando un objeto de la paleta Servers TWordApplication, pero claro esto me limita a que luego pueda utilizar comandos como :

WordAppl.WordBasic.EditBookmark
WordAppl.WordBasic.Insert

En fin, que por lo pronto en lugar de subir o bajar márgenes voy a conformarme con añadir o quitar renglones que no es tan eficaz como lo que realmente necesito pero me sirve de parche temporal.

TONIAM 15-09-2005 10:19:53

En el programa que te comente que estoy haciendo en un informe bajo los margenes asi:

oWord.ActiveDocument.PageSetup.TopMargin := CentimetersToPoints(5);

oWord es un TWordAplication y la funcion es esta

function TFormPRL.CentimetersToPoints(a:Single):Single;
begin

{Converts a measurement from centimeters to points (1 cm = 28.35 points).
Returns the converted measurement as a Single.
Syntax
expression.CentimetersToPoints(Centimeters)
expression Optional. An expression that returns an Application object.
Centimeters Required Single. The centimeter value to be converted to points.}

Result:=28.35*a;

end;

Un saludo
Toni

jzk 15-09-2005 11:13:06

Gracias por el tiempo dedicado, pero a la solución que me planteablas de
Cita:

oWord es un TWordAplication
ya la había probado. De hecho lo comento en el correo anterior:

Cita:

Hasta ahora la única manera que he encontrado ha sido utilizando un objeto de la paleta Servers TWordApplication, pero claro esto me limita a que luego pueda utilizar comandos como :

WordAppl.WordBasic.EditBookmark
WordAppl.WordBasic.Insert
Por lo que no puedo hace uso de ella.

Un saludo.


La franja horaria es GMT +2. Ahora son las 02:27:02.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi