Delphi Word-Escrever texto colorido

03/12/2003

4

:?: Olá a todos.
Tenho um programa que gera um relatorio para o Word, nele troco fontes, negrito, etc.. Preciso saber como colorir parte deste texto que estou gerando. Criei um Script/Macro, focou:
- Selection.Font.ColorIndex=wdGreen,
No programa instruções como:
MsWord.Font.Color(wdGreen), ou
MsWord.Color(wdGreen), não funcionam...
Caso alguem possa dar-me uma pista agradeço muito...
Neto


Responder

Posts

03/12/2003

Marconi

Ai vai um exemplo que funciona

{*********************************************}
{* *}
{* Trabalhando com Word via programação *}
{* Este projeto foi desenvolvido com *}
{* Conteúdos extraidos da internet *}
{* *}
{* Montado por Ronaldo Teodoro de Araujo *}
{* Projeto livre para uso e alterações *}
{* *}
{* rontear@hotmail.com *}
{* *}
{*********************************************}
unit Principal;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ComObj, ActiveX,
StdCtrls, Buttons, ExtCtrls;

type
TForm1 = class(TForm)
SaveDialog1: TSaveDialog;
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
GroupBox3: TGroupBox;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Edit5: TEdit;
Edit6: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
rb: TRadioGroup;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation
var VelhoWord, NovoWord: variant;

{$R *.DFM}

function AdiquiraOuCrieObjeto(const ClasseNome: String):IDispatch;
var Classifique_Id: TGUID;
Desconhecido: IUnknown;
begin
Classifique_ID:=ProgIdToClassId(ClasseNome);
if Succeeded(GetActiveObject(Classifique_ID, nil, Desconhecido)) then
OleCheck(desconhecido.QueryInterface(Idispatch, Result))
else
Result:=CreateOleObject(ClasseNome);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
VelhoWord:=AdiquiraOuCrieObjeto(´Word.Basic´);
NovoWord :=AdiquiraOuCrieObjeto(´Word.Application´);
VelhoWord.FileNew;//criar um arquivo novo
VelhoWord.AppShow; //chamar a aplicação
VelhoWord.Insert (Edit1.Text); //inserir o texto
VelhoWord.Insert (#13+Edit2.Text); //inserir o texto
if Application.MessageBox(´Imprimir documento?´,´Confirmação´,MB_ICONQUESTION+MB_YESNO)=mrYES then
VelhoWord.Print;
end;


procedure TForm1.Button2Click(Sender: TObject);
var
Documento, Cadeia: Variant;
begin
VelhoWord:=AdiquiraOuCrieObjeto(´Word.Basic´);
NovoWord :=AdiquiraOuCrieObjeto(´Word.Application´);
// tornar visivel
NovoWord.Visible := True;
// novo documento
NovoWord.Documents.Add;
// inserir e formatar texto
NovoWord.Documents.Item(1).Range.Text := Edit3.Text+#13;
Documento := NovoWord.Documents.Item(1);
Cadeia:=Documento.Paragraphs.Item(2).Range;
Cadeia.Text :=´Marconi Informática®´;
[b:48357e53fe] Cadeia.Font.Color:=clRed;[/b:48357e53fe]
Cadeia.Font.Name:=´Monotype Corsiva´;
Cadeia.Bold :=1;
Cadeia.Font.Size:=20;
// selecionar o terceiro parqagrafo
Documento := NovoWord.Documents.Item(1);
Documento.Paragraphs.Add; // Primeiro Parágrafo
Documento.Paragraphs.Add; // Segundo Parágrafo
Documento.Paragraphs.Add; // Terceiro Parágrafo
Cadeia := Documento.Paragraphs.Item(5).Range;
Cadeia.Text := ´Carlos Augusto Marconi´;
Cadeia.Bold := 1;
Cadeia.Italic := 1;
Cadeia.Font.Name:=´Times New Roman´;
Cadeia.Font.Color:=clBlue;
Cadeia.Font.Size := 30;
case Rb.ItemIndex of
0:Cadeia.Paragraphs.Alignment:=taLeftJustify;
1:Cadeia.Paragraphs.Alignment:=taRightJustify; // estão invertidos
2:Cadeia.Paragraphs.Alignment:=taCenter; // mas só funcionam assim
end;
Documento.MoveTo(0,0);
Documento.LineTo(500,500);
// salvar o arquivo gerado
{ SaveDialog1.InitialDir:=ExtractFilePath(Application.ExeName);
if SaveDialog1.Execute then
Begin
Documento.SaveAs (WideString (SaveDialog1.Filename), 0);
Documento.SaveAs (FileName := WideString (SaveDialog1.Filename),
FileFormat := 0, //formato comum do word
SaveNativePictureFormat := 1);
end;}
// NovoWord.Quit;
end;

procedure TForm1.Button3Click(Sender: TObject);
var
WinWord, Docs, Doc: Variant;
begin
VelhoWord:=AdiquiraOuCrieObjeto(´Word.Basic´);
NovoWord :=AdiquiraOuCrieObjeto(´Word.Application´);
// Tornar o word visivel
NovoWord.Visible := True;
// Abrir arquivo para edição
Doc:= NovoWord.Documents.Open(ExtractFilePath(Application.ExeName)+´Exemplo1.doc´);
// Substituir itens do arquivo por texto escolhido
Doc.Content.Find.Execute(FindText := ´0001´, ReplaceWith := Edit5.Text);
Doc.Content.Find.Execute(FindText := ´0002´, ReplaceWith := Edit6.Text);
// Salvar Documento
Doc.SaveAs(ExtractFilePath(Application.ExeName) + ´Ronaldo.doc´);
if Application.MessageBox(´Deseja Imprimir este documento?´,´Confirmação´,MB_ICONQUESTION+MB_YESNO)=MRYes then
Doc.PrintOut(false);
// Fechar
NovoWord.Quit;
end;

end.

Marconi


Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira