Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Wie kann ich beim Ausrucken von Outlook ContactItems den Drucker auswählen? (https://www.delphipraxis.net/156052-wie-kann-ich-beim-ausrucken-von-outlook-contactitems-den-drucker-auswaehlen.html)

JustVoodoo 18. Nov 2010 10:58

Wie kann ich beim Ausrucken von Outlook ContactItems den Drucker auswählen?
 
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.

soulies 18. Nov 2010 11:35

AW: Wie kann ich beim Ausrucken von Outlook ContactItems den Drucker auswählen?
 
hoi,

was passiert denn wenn du die reihenfolge deines Codes dahingehend änderst,
das zu erst der PrinterSetup Dialog erscheint.

Es könnte ja sein das beim aufruf von
Delphi-Quellcode:
oaOutlook := CoOutlookapplication.create;
der aktuell eingestellte Drucker gespeichert und verwendet wird ...

wenn jetzt der Dialog kommt kann man zwar den Drucker ändern,
aber im Outlook-Objekt steht halt der alte drin ...

Idee:
Delphi-Quellcode:
procedure TvbCONTACT.ToolButton11Click(Sender: TObject);
var
  oaOutlook : Variant; //OutlookApplication;
  nsOutlookNamespace : Variant; //Namespace;
  ciContact : Variant; //ContactItem;
begin
  if PrinterSetupDialog1.Execute then
  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';

    ciContact.PrintOut;
  end;
end;
cya

JustVoodoo 19. Nov 2010 08:15

AW: Wie kann ich beim Ausrucken von Outlook ContactItems den Drucker auswählen?
 
Hi soulies,

die Umstellung hat leider nichts gebracht. Es wird immer noch auf dem Windowsstandarddrucker gedruckt.

Ich habe noch etwas getestet und zwar kann man auch während des laufenden Delphiprogramms den Std-Drucker ändern und wenn ich auf meinen Toolbutton klicke, wird der neue Drucker ausgewählt. Ein möglicher Workarround wäre also, den Std-Drucker von Windows zu ändern, den Contact auszudrucken, und dann wieder den alten Drucker einstellen. Das würde ich aber nur ungerne machen, möglicherweise gibt es dabei ja auch Probleme mit den Rechten, bzw Druckereinstellungen. Ich weiss ja nicht, ob die Einstellungen wieder auf Standard gesetzt werden, wenn man zwischenzeitlich nen anderen Drucker als Std-Drucker hatte. Könnte ich zwar auch mal testen, aber diesen Workarround werde ich erst nutzen wenn es gar nicht anders geht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:47 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz