Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Servers (https://www.clubdelphi.com/foros/forumdisplay.php?f=9)
-   -   Posicionarme en un lugar concreto del documento (https://www.clubdelphi.com/foros/showthread.php?t=17522)

rafita 12-01-2005 09:56:25

Posicionarme en un lugar concreto del documento
 
Buenas a todos,

Intento utilizar Word para realizar cartas personalizadas partiendo de datos de un formulario.
No es un "mailmerge" porque el origen de datos no es una base de datos, sino campos de un formulario, campos calculados,.... Por tanto en el documento Word no utilizo los campos combinados sino marcadores, que aunque son más torpes me sirven para mis propósitos:
Código:

Marcador:='MFecha_Diligencia1';
Contenido:=FechaLiteral(Edit36.Text);
if MiDocumento.Bookmarks.Exists(Marcador) then
  MiDocumento.Bookmarks.Item(Marcador).Range.InsertBefore(Contenido);

El problema surge cuando en una determinada posición quiero insertar una serie INDETERMINADA de párrafos:
Código:

// utilizo este marcador para posicionar el cursor en el punto donde queremos
  Marcador:='MIntereses1';
  Contenido:='';
  if MiDocumento.Bookmarks.Exists(Marcador) then MiDocumento.Bookmarks.Item(Marcador).Range.InsertBefore(Contenido);
  // creamos un párrafo nuevo por cada año que tiene intereses
  if StrToFloat(Edit20.Text)<>0 then // 1999 _________________________________
    begin
      MiDocumento.Range(EmptyParam, EmptyParam).InsertParagraphAfter;
      MiDocumento.Paragraphs.Last.Range.Text:=Format('%8.2m',[StrToFloat(Edit21.Text)]);
    end;
  if StrToFloat(Edit23.Text)<>0 then // 2000 _________________________________
    begin
      MiDocumento.Range(EmptyParam, EmptyParam).InsertParagraphAfter;
      MiDocumento.Paragraphs.Last.Range.Text:=Format('%8.2m',[StrToFloat(Edit24.Text)]);
    end;
....

Supuse que al sustituir el marcador MIntereses1 por un espacio en blanco el cursor de inserción se situaría allí, y los nuevos párrafos que inserto irian tras dicho espacio, pero no funciona así sino que se situa al final del documento.

¿alguien puede darme alguna pista? ¿alternativas?
Gracias a todos

rafita 12-01-2005 11:14:37

Hola a todos otra vez.

Lo solucioné de forma poco fina: recopilo toda la información en una cadena (String) y sustituyo el marcador por esa cadena.

Código:

AcumuladorTexto:='';
// añadimos los intereses de cada año
  if StrToFloat(Edit20.Text)<>0 then // 1999 _________________________________
    AcumuladorTexto:=AcumuladorTexto+Format('%8.2m',[StrToFloat(Edit21.Text)])+#13;
  if StrToFloat(Edit23.Text)<>0 then // 2000 _________________________________
      AcumuladorTexto:=AcumuladorTexto+Format('%8.2m',[StrToFloat(Edit24.Text)])+#13;
  if StrToFloat(Edit26.Text)<>0 then // 2001 _________________________________
    AcumuladorTexto:=AcumuladorTexto+Format('%8.2m',[StrToFloat(Edit26.Text)])+#13;
  if StrToFloat(Edit29.Text)<>0 then // 2002 _________________________________
    AcumuladorTexto:=AcumuladorTexto+Format('%8.2m',[StrToFloat(Edit29.Text)])+#13;
  if StrToFloat(Edit46.Text)<>0 then // 2003 _________________________________
    AcumuladorTexto:=AcumuladorTexto+Format('%8.2m',[StrToFloat(Edit47.Text)])+#13;
  if StrToFloat(Edit49.Text)<>0 then // 2004 _________________________________
    AcumuladorTexto:=AcumuladorTexto+Format('%8.2m',[StrToFloat(Edit49.Text)])+#13;
  if StrToFloat(Edit52.Text)<>0 then // 2005 _________________________________
    AcumuladorTexto:=AcumuladorTexto+Format('%8.2m',[StrToFloat(Edit53.Text)])+#13;
  Marcador:='MIntereses1';
  Contenido:=AcumuladorTexto;
  if MiDocumento.Bookmarks.Exists(Marcador) then MiDocumento.Bookmarks.Item(Marcador).Range.InsertBefore(Contenido);

De cualquier forma ¿alguien sabe cómo posicionarse en un punto del documento word?

Ta'luego :D

pepe2000 24-01-2005 16:16:14

use de componente
 
Hola. yo encontre por ahí un componente excelente que te permite manejar word como quieras. Ahora mismo intente buscarlo en la red. pero no lo encuentro asi que si estas interesado puedes comunicarte conmigo y te lo envio

Wdo.Net 11-07-2006 04:11:31

Hermano, yo tambien estoy interesado en dicho componente, si puedes envialo al correo wgamarrac@yahoo.es, te agradezco. Chao.

rafita 17-07-2006 10:44:39

Hola compañeros,

Efectivamente sí estoy interesado.

Puedes mandarmelo a mi cuenta , aunque sería conveniente que pusieses la dirección en este foro, porque supongo que puede haber mucha gente interesada, y de esta forma se la facilitas a más personas.

Saludos.

pepe2000 18-07-2006 00:58:45

Respuesta
 
Hola.
El componente que permitía trabajar word desde delphi, era el WordParaTorpes; y se encontraba en la colección de componentes del Club Delphi.
Ahora el club tiene desactivadas varias opciones, como son la seccion de trucos, componentes, ejemplos, etc. Espero que este sea un motivo para que los Moderadores y Responsables de la pagina puedan hacer algo al respecto...
He buscado el componente entre mis copias de seguridad y aún no lo encuentro. si eso es realmente lo quieren, no duden en pedirmelo para seguir buscando.
Saludos.


La franja horaria es GMT +2. Ahora son las 13:07:52.

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