Wordmanagement - Print Dialog? (CC)

27. Juni 2012 13:35

Hallo liebe Leute,

ich habe hier eine Anforderung, für die ich nach längerer Suche keine Lösung finden konnte.
Wir benutzen in einem Modul das NAV-Standard-Wordmangement, allerdings etwas umgebaut mit individuellen Feldern, um diverse Worddokumente zu generieren und ggf. zu drucken. Im Prinzip funktioniert alles: ich generiere über eine Kopierte Variante des "Create Interaction" Forms eine Aktivität, je nach Korrespondenzart wird mir daraus eine Mail oder ein Ausdruck generiert.
Wenn ich nun "Brief" wähle, wird dabei der Standarddrucker angesprochen und direkt gedruckt. Die Anforderung wäre nun im besten Fall einen Standard "Print-Dialog" hochzubringen, also eine Windows-Druckerauswahl, wo ich den Drucker wählen, evtl. die Anzahl der Kopien ändern kann usw...

Die bisher weiteste Lösung die ich fand wäre, per Druckerauswahl in NAV einen Drucker zu wählen und diesen dann per ""WordAutomationsvariable".ActivePrinter('Druckerxy') als Standarddrucker zu setzen, dann würde er passend drucken. Aber das ist nicht annähernd gut, weil ich z.B. keine Kopien einstellen kann, weil mir dadurch der Standarddrucker umgesetzt wird usw. usf.....

Gibt es denn keinen einfachen Hack, um den Standard Print-Dialog aufzurufen?

Hier mal ein Auszug aus dem jetzigen Code (nicht wundern, ich habe Teile dazwischen rausgenommen, weil dort nur verschiedene Properties usw. gesetzt werden):

Code:
  wrdDoc := wrdApp.Documents.Open2000(MainFileName);
  wrdDoc.MailMerge.MainDocumentType := 0;

  Window.UPDATE(6,Text013);
  ParamInt := 7; // 7 = HTML
  wrdDoc.MailMerge.OpenDataSource2000(MergeFileName,ParamInt);
  Window.UPDATE(6,STRSUBSTNO(Text014,TempDeliverySorter."Correspondence Type"));

  CASE TempDeliverySorter."Correspondence Type" OF
    TempDeliverySorter."Correspondence Type"::Fax:
      BEGIN
        wrdDoc.MailMerge.Destination := 3;
        wrdDoc.MailMerge.MailAddressFieldName := Text015;
        wrdDoc.MailMerge.MailAsAttachment := TRUE;
        wrdDoc.MailMerge.Execute
      END;
    TempDeliverySorter."Correspondence Type"::"E-Mail":
      BEGIN
        wrdDoc.MailMerge.Destination := 2;
        wrdDoc.MailMerge.MailAddressFieldName := Text015;
        wrdDoc.MailMerge.MailSubject := TempDeliverySorter.Subject;
        wrdDoc.MailMerge.MailAsAttachment :=
          wrdDoc.MailMerge.MailAsAttachment OR TempDeliverySorter."Send Word Docs. as Attmt.";
        wrdDoc.MailMerge.Execute
      END;
    TempDeliverySorter."Correspondence Type"::"Hard Copy":
      BEGIN
        wrdDoc.MailMerge.Destination := 0; // 0 = wdSendToNewDocument
        wrdDoc.MailMerge.Execute;
        wrdApp.ActiveDocument.PrintOut2000;  //Hier würde ich gerne den Print-Dialog bringen
        ParamBln := FALSE;
        wrdApp.ActiveDocument.Close(ParamBln);
      END;
  END;