PDA

Ver la Versión Completa : Posicionarme en un lugar concreto del documento


rafita
12-01-2005, 09:56:25
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:
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:
// 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.

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
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 (rafael.bayo@cuenca.es) , 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
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.