Bueno, aqui va, es que yo cuando me he enfrentado a este componente, que
me ha parecido genial, he tenido una serie de problemas en el metodo Open, porque yo cuando instale delphi lo hize para Office97 y este componente parece que requiere la BPL de XP, pero bueno todo empezo a darme problemas, hacia el open y al connectar con Word se me bloqueaba la aplicacion, se me quedaba WORD residente en memoria consumiendo en 97% de los recursos de sistema, etc... pues nada, mostrare aqui como he sustituido el metodo Open y los cambios que esto me supuso en el resto del componente.
Código Delphi
[-]
procedure TWordParaTorpes.Open;
var
DOCFileName,NewDOCFileName,ItemIndex:OleVariant;
begin
NewDOCFileName := True;
if FFileName<>'' then DOCFileName := FFileName;
WordApplication:= CreateOleObject('Word.Application');
Doc:= WordApplication.Documents.Add(DOCFileName); ParaFmt:= TWordParagraphFormat.Create(self);
DOCFileName := EmptyParam;
ItemIndex := 1;
try
WordApplication.Caption := Caption;
NewDOCFileName := False;
Wordapplication.Visible := True;
WordApplication.Options.CheckSpellingAsYouType := False; WordApplication.Options.CheckGrammarAsYouType := False;
ChangeFont;
except
on E: Exception do begin
ShowMessage(E.Message);
WordApplication.Disconnect;
end;
end;
end;
pero este cambio me llevo a dos cosas, una a tener que todas las variables de tipo RANGE, etc.. sustituirlas por OleVariant, pero bueno todo lo demas seguia funcionando bien, y cuando se hacia un BookMark para cambiar el texto, el metodo Set_Text tenia que sustituirlo por Text := loquesea
Otra de las pegas que encontre es que el ChangeFont ya no funcionaba, asi que lo elimine, pero tiene que funcionar de alguna forma, pero bueno, se lo dejo a alguien, no todo va a ser para mi
claro, que no termine de probar todos los metodos, pero por lo menos error de compilacion no me daba.
Otro de los cambios que hizce fue en el Reemplace, lo hize tal que asi
Código Delphi
[-]
WordApplication.Selection.Find.ClearFormatting;
WordApplication.Selection.Find.Text := '<<' + BookmarkName + '>>';
WordApplication.Selection.Find.Replacement.Text := text;
WordApplication.Selection.Find.Forward := True;
WordApplication.Selection.Find.Wrap := wdFindContinue;
WordApplication.Selection.Find.Format := False;
WordApplication.Selection.Find.MatchCase := false;
WordApplication.Selection.Find.MatchWholeWord := False;
WordApplication.Selection.Find.MatchWildcards := false;
WordApplication.Selection.Find.MatchSoundsLike := False;
WordApplication.Selection.Find.MatchAllWordForms := False;
WordApplication.Selection.Find.Execute(Replace := wdReplaceAll);
difiere un poco, pero hace exactamente lo mismo. seria cuestion de parametrizar todas las opciones de Buscar y Remplazar, porque aqui van todas puestas por defecto.
Por lo demas me funciona todo perfectamente, de hecho me ahorro muchisimo trabajo,
GRACIAS Nailuj!! espero que de esta forma, ahora ya no sea necesario que envies la BPL ni el TLB, asi sera mucho mas optimo independientemente de la version de Word que se tenga instalada, tanto en el equipo como el Delphi.
Ale animaros todos!!!