GARANTIR DESCONTO

Fórum Delphi x Word #355030

07/03/2008

0

Colega não sei se entende más se você quer tipo criar uma carta de cobrança com um texto padrão é trocar alguns nomes ou linhas faça assim: unit frmPrincipal; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComObj, StdCtrls, Buttons; type TForm1 = class(TForm) lbLocador: TLabel; edLocador: TEdit; Label1: TLabel; edLocatario: TEdit; Label2: TLabel; edFiadores: TEdit; ckPintura: TCheckBox; btImprimir: TBitBtn; btFechar: TBitBtn; procedure btImprimirClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation uses Math; {$R *.dfm} procedure TForm1.btImprimirClick(Sender: TObject); var MSWord: Variant; szPintura : string; begin MSWord := CreateOleObject(´Word.Application´); MSWord.Documents.Open(ExtractFIlePath(Application.ExeName) + ´modelo.doc´); // ShowMessage(MSWord.ActiveDocument.Content.Text); MSWord.ActiveDocument.Content.Find.Execute(FindText := ´<¬NOMELOCADOR¬>´, ReplaceWith := edLocador.Text, Replace := 2); MSWord.ActiveDocument.Content.Find.Execute(FindText := ´<¬NOMELOCATARIO¬>´, ReplaceWith := edLocatario.Text, Replace := 2); MSWord.ActiveDocument.Content.Find.Execute(FindText := ´<¬FIADORES¬>´, ReplaceWith := edFiadores.Text, Replace := 2); if ckPintura.Checked then szPintura := ´Pintura Nova´ else szPintura := ´´; MSWord.ActiveDocument.Content.Find.Execute(FindText := ´<¬PINTURA¬>´, ReplaceWith := szPintura, Replace := 2); MSWord.ActiveDocument.PrintOut(Copies := 1); MSWord.Exit; // MSWord.Visible := True; end; end. Se não for isso.


Bom encontrei isso aqui já no forum que resolve quase que 100¬ das minhas dúvidas, a principal dúvida é a seguinte. Como o documento do word vai ser um laudo de vistoria, e conterá fotos. É possivel inserir ou trocar fotos do mesmo jeito que é feito com os textos? O objeto tem um salvar como de modo que depois de alterar eu possa salvar ele em disco e imprimir em seguida?


Agradeço desde já as possiveis ajudas.


Vitor Rodrigues

Vitor Rodrigues

Responder

Posts

09/03/2008

Vitor Rodrigues

up


Responder

Gostei + 0

16/11/2008

Johnny-walker

Amigo o segredo está em vc pesquisar as macros que o word cria...

neste exemplo insiro uma imagem do arquivo para o word:

Sub Macro5()
´
´ Macro5 Macro
´ Macro gravada 16/11/2008 por XP Vista Edition
´
    Selection.InlineShapes.AddPicture FileName:= _
        "C:\Documents and Settings\Administrador\Meus documentos\Minhas imagens\pequim_logo_censura.jpg" _
        , LinkToFile:=False, SaveWithDocument:=True
End Sub


no arquivo WordXP.pas há referencia a estas linhas de código.

    function AddPicture(const FileName: WideString; var LinkToFile: OleVariant; 
                        var SaveWithDocument: OleVariant; var Left: OleVariant; 
                        var Top: OleVariant; var Width: OleVariant; var Height: OleVariant; 
                        var Anchor: OleVariant): Shape; safecall;



Assim quando resolvo inserir uma imagem por cima desta veja:

Sub Macro6()
´
´ Macro6 Macro
´ Macro gravada 16/11/2008 por XP Vista Edition
´
    Selection.InlineShapes(1).Reset
    Selection.InlineShapes(1).Reset
    Selection.InlineShapes.AddPicture FileName:= _
        "C:\Documents and Settings\Administrador\Meus documentos\Minhas imagens\teste recordcount.JPG" _
        , LinkToFile:=False, SaveWithDocument:=True
´Linha irrelevante - apenas subi o scroll
    ActiveWindow.ActivePane.VerticalPercentScrolled = 0
End Sub


E mais uma vez o delphi nos mostra o caminho, há esta propriedade no trecho de codigo seguido de sua interface:

[code]
property InlineShapes: InlineShapes read Get_InlineShapes;


e tb sua interface:
/ *********************************************************************//
// Interface: InlineShapes
// Flags: (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID: {000209A9-0000-0000-C000-000000000046}
// *********************************************************************//
InlineShapes = interface(IDispatch)
[´{000209A9-0000-0000-C000-000000000046}´]
function Get_Application: WordApplication; safecall;
function Get_Creator: Integer; safecall;
function Get_Parent: IDispatch; safecall;
function Get_Count: Integer; safecall;
function Get__NewEnum: IUnknown; safecall;
function Item(Index: Integer): InlineShape; safecall;
function AddPicture(const FileName: WideString; var LinkToFile: OleVariant;
var SaveWithDocument: OleVariant; var Range: OleVariant): InlineShape; safecall;
function AddOLEObject(var ClassType: OleVariant; var FileName: OleVariant;
var LinkToFile: OleVariant; var DisplayAsIcon: OleVariant;
var IconFileName: OleVariant; var IconIndex: OleVariant;
var IconLabel: OleVariant; var Range: OleVariant): InlineShape; safecall;
function AddOLEControl(var ClassType: OleVariant; var Range: OleVariant): InlineShape; safecall;
function New(const Range: Range): InlineShape; safecall;
function AddHorizontalLine(const FileName: WideString; var Range: OleVariant): InlineShape; safecall;
function AddHorizontalLineStandard(var Range: OleVariant): InlineShape; safecall;
function AddPictureBullet(const FileName: WideString; var Range: OleVariant): InlineShape; safecall;
property Application: WordApplication read Get_Application;
property Creator: Integer read Get_Creator;
property Parent: IDispatch read Get_Parent;
property Count: Integer read Get_Count;
property _NewEnum: IUnknown read Get__NewEnum;
end;

[code]


Acredito que isto possa resolver o seu caso....

PS.: a propósito quando coloco a macro para gravar infeliizmente trava-se o mouse para clicar em objetos, o que achei estranho, então a solução é acionar o menu de contexto pelo teclado...



bye


Responder

Gostei + 0

16/11/2008

Johnny-walker

sei que é uma mensagem velha, mas isto deve ajudar alguém


bye


Responder

Gostei + 0

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

Aceitar