Hi,
ich habe ein kleines Problem und nach langer Suche noch keine Lösung gefunden.
Ich will ein frisch erstelltes (Outlook) ContactItem ausdrucken. Das geht auch problemlos, nur wird immer auf dem Standartdrucker gedruckt.
Hier dann noch ein paar Infos zum Background.
Windows 7 (64 bit)
Delphi 2007
Hier dann noch die renevanten Codeteile:
Delphi-Quellcode:
procedure TvbCONTACT.ToolButton11Click(Sender: TObject);
var
oaOutlook : Variant;
//OutlookApplication;
nsOutlookNamespace : Variant;
//Namespace;
ciContact : Variant;
//ContactItem;
begin
// Login
oaOutlook := CoOutlookapplication.create;
nsOutlookNamespace := oaOutlook.getnamespace('
MAPI');
nsOutlookNamespace.Logon('
', '
', False, True);
// Create ContactItem and fill contact information
ciContact := oaOutlook.CreateItem(olContactItem);
ciContact.FullName := '
TestName';
if PrinterSetupDialog1.Execute
then
ciContact.PrintOut;
end;
Ich habe häufig die Typen der Variablen oaOutlook, ciContact, etc. geändert um andere Lösungen zu testen. Ursprünglich habe ich die Typen OutlookApplication, Namespace und ContactItem benutzt.
Meine bisherigen Lösungsversuche:
1) printDialogSetup1.execute
Dialog wird angezeigt, ich kann alles einstellen, aber Contact.PrintOut nutzt diese Einstellungen nicht. Hab gelesen, dass printDialogSetup nur für die Delphianwendung gilt und nicht für die meisten OLEs.
2) Hab bei einem Beispiel für Excel gelesen dass man mit "Excel.Application.ActivePrinter" (Excel ist dabei vom Typ Variant gewesen) den Drucker einstellen kann. Wenn ich allerdings mein Outlook als Variant benutze, dann bekomme ich keine Methode .Application.ActivePrinter, sondern nur eine Liste von ca 10 Templates (wie z.B. '(*', '{', 'check', ... , 'summary' )
Die anderen Lösungensversuche fallen mir gerade nicht mehr ein
Nochmal kurz zum schluss. Ziel ist es, das ContactItem über einem beliebigen Drucker zu drucken.