Delphi Word-Escrever texto colorido

03/12/2003

0

:?: 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


Neto

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

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar