Helpful Information
 
 
Category: Delphi Programming
OLE msWord Automation - How to open Print Dialog?

In my D5 Application - When I click on a button I can start an instance of MS Word, open a document populate it with text, save it, print it to the default printer and close it..

But, how might I allow the user to access the MSWord FilePrint Dialog to select the printer to print to prior to it printing? Thank you in advance.
Below is the code I am currently using: (uses : comobj)

...
if sendViaValue = 'Print' then // ***begin print section***
begin
wrdApp := CreateOleObject('Word.Application');
wrdDoc := wrdApp.Documents.Open('Letterhead.doc');
wrdDoc.Select;
wrdSelection := wrdApp.Selection;
wrdApp.Selection.GoTo(wdGotoLine,wdGoToLast);
// Enter the date
wrdSelection.ParagraphFormat.Alignment := wdAlignParagraphRight;
wrdSelection.InsertDateTime('dddd, MMMM yyyy',False);
InsertLines(1);
wrdSelection.ParagraphFormat.Alignment := wdAlignParagraphLeft;
// Enter Address
wrdSelection.TypeText(ccName);
wrdSelection.TypeParagraph;
wrdSelection.TypeText(ccStreet);
wrdSelection.TypeParagraph;
if ccSuburb <> '' then
begin
wrdSelection.TypeText(ccSuburb);
wrdSelection.TypeParagraph;
end;
wrdSelection.TypeText(ccCityStateZip);
if (ccCountry <> '') and (ccCountry <> 'United States') then
begin
wrdSelection.TypeParagraph;
wrdSelection.TypeText(ccCountry);
end;
InsertLines(2);

wrdSelection.TypeText('Dear ' + ccFirst + ',');
wrdSelection.TypeParagraph;

InsertLines(1);

wrdSelection.ParagraphFormat.Alignment := wdAlignParagraphJustify;
// Add Body Text
strToAdd := Clipboard.AsText;
wrdSelection.TypeText(strToAdd);
InsertLines(2);
wrdSelection.ParagraphFormat.Alignment := wdAlignParagraphLeft;
// Add salutation and signature
strToAdd := 'God loves you and we love you,' + Chr(13) +
'TGM Prayer Ministry';
wrdSelection.TypeText(strToAdd);
// Need to allow user to select Printer here.
wrdDoc.PrintOut;
wrdDoc.Saved := False;
wrdDoc.Close(False);
ShowMessage('Letter Sent to Printer');
end // *******end print section*******
...
Tim
tim@tgm.org

PS:
This msWord macro works inside of msWord:

Dialogs(wdDialogFilePrint).Show

Now how would I get this to work in my Delphi app?

Try something like this:


prntDlg := wrdApp.Dialogs.item(wdDialogFilePrint);
printDlg.Show;

In your answer:


prntDlg :=
wrdApp.Dialogs.item(wdDialogFilePrint);
printDlg.Show;


What is item refering to? (the Document?)
And what type of variable is it? (Varient?)

item is an enumeration of the dialogs in the Word.Application object. See http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dv_wrcore/html/wrgrfworddialogmethods.asp for more.










privacy (GDPR)