Wir rufen die von combit zu Verfügung gestellte Vorschau so auf:
FLL.LlPreviewDisplay(ExtractFileName(Filename), ExtractFilePath(Filename), Application.Handle);
Wobei FLL ein Objekt von TL28_ ist. Es funktioniert dabei auch alles, ausser der Schnelldruckknopf (bzw. einfach der Druckknopf) ist disabled:
tmetternich
(combit Support - Thomas Metternich)
2
Hallo Christian,
ich habe das mal kurz getestet (Delphi mit TL29_ Objekt). Der Schnelldruck Knopf war dann aber aktiv. Ich habe mal eine Previewdatei angehängt. Kannst du die mal per “LlPreviewDisplay” öffnen? Falls da der Schnelldruck aktiv ist, kannst du mal eine von dir hier hochladen? simple.LL (68 KB)
Mit dieser Datei hat es tatsächlich geklappt. Wir dachten es liegt eher an denn Optionen, welche über die TL28_ gesetzt werden können.
Im Anhang ein Beispiel: Kunden.KundenFahrzeugInfo.LL (108 KB)
tmetternich
(combit Support - Thomas Metternich)
4
Das Problem scheint der Druckername zu sein, welcher in der Datei steht. Wir werden uns das genauer anschauen und werde dich hier auf dem Laufenden halten.
Ein möglicher Workaround wäre es, die Option “LL_OPTION_FORCE_DEFAULT_PRINTER_IN_PREVIEW” zu setzen. Dann würden die Druckernamenseinstellungen nicht an den Preview übergeben, so dass dieser immer den Standard-Drucker wählt.
Das setzen dieser Option hat leider keinen Einfluss. Wir setzen eine Reihe von verschiedenen Optionen, ich werde versuchen mit dem Debugger mehr herauszufinden.
Ich habe das Problem gelöst, in der Option LL_OPTIONSTR_EXPORTS_ALLOWED_IN_PREVIEW, war PRN (also Printer) nicht gesetzt sondern nur PDF und PICTURE_JPEG.
Gibt es auch eine Möglichkeit, dass nach dem gedruckt wurde, die Vorschau sich automatisch wieder schliesst?
Dafür müsstest du ein eigenes Vorschaufenster implementieren (es gibt dafür die TLl29PreviewControl-Komponente), in der Komponente die Toolbar ausschalten und deine eigene Toolbar anbieten. Dort kannst du dann auf den Klick selber reagieren (z. B. mit einem Aufruf von PrintAllPages auf deine Preview-Control-Instanz) und anschließend das Fenster schließen.
Leider nein - es wäre dann ja auch die Frage, ob der Druck erfolgreich gewesen sein muss, d. h. hier müsste gegebenenfalls abgewartet werden, ob der Spooler einen Fehler zurückliefert. Oder ob der Dialog abgebrochen wurde. Das so zu machen, dass es in allen Szenarien “das richtige” macht ist am besten in der eigenen Applikation untergebracht .