![]() |
[Fastreport] Benutzereinstellungen für Papier abfragen
Hallo,
ich habe BDS06 und FR3.24. Ich habe ein Report designed für den Standard-Drucker. Wenn der Benutzer das Report im Preview ansieht, kann dieser die Druckereinstellungen ändern: Drucker / Papersize / Orientation etc. Wie komme ich an diese geänderten Daten heran? Mit TfrxReportPage bekomme ich nur die im Designmode vorgegebenen Daten. Muss ich in die Untiefen von Win einsteigen? Danke! |
Re: [Fastreport] Benutzereinstellungen für Papier abfragen
Abfrage sollte über Unit Printer möglich sein.
|
Re: [Fastreport] Benutzereinstellungen für Papier abfragen
Hallo,
die Klasse TPrinter stellt "nur" den Zugriff auf PaperWidth, PaperHeight, Orientation bereit. Nicht aber auf PaperSize: Hier wird das eigentliche Papierformat ausgewählt. Zur Entwicklungszeit kenne ich das Papierformat nicht, da auf dem Zielrechner ein spezieller Drucker eingesetzt wird (Brother Plakettendrucker). Der Drucker verweigert den Druck mit Papersize=Custom und der passenden PaperWidth und PaperHeight. RaveReports bietet überhaupt keinen Zugriff auf PaperSize. FastReport schon, aber eben nicht auf die vom Benutzer ausgewählte PaperSize. Danke. |
Re: [Fastreport] Benutzereinstellungen für Papier abfragen
Schau mal ob das bei Dir funktioniert.
Delphi-Quellcode:
function GetPaperSizeIndex : integer;
var p : array [0..99] of WORD; pDevMode : PDeviceMode; DefSource : Word; i : Integer; Res : DWord; begin Printer.GetPrinter(ADevice, ADriver, APort, hDMode); if (hDMode <> 0) then begin pDevMode := GlobalLock(hDMode); if pDevMode <> nil then begin DefSource := pDevMode^.dmPaperSize; Res := DeviceCapabilities(ADevice,APort,DC_PAPERS,PCHAR(@p[0]),pDevMode); for i := 0 to Res-1 do if DefSource = p[i] then break; end; GlobalUnlock(hDMode); result := i; //Gibt Nr in Array (p) zurück end; end; |
Re: [Fastreport] Benutzereinstellungen für Papier abfragen
Hallo uwewo,
vielen Dank! Dein Ansatz sieht sehr vielversprechend aus. Das Problem liegt scheinbar schon weiter vorne:
Delphi-Quellcode:
Schon _nach_ dem Aufruf von ShowReport hat das Objekt TPrinter nicht mehr die Printer-Einstellungen, die ich innerhalb ShowReport() eingestellt habe.
frxReport1^.ShowReport();
i:=GetPaperSizeIndex; Und damit lande ich beim default-Printer mit seinen Einstellungen :? Und mit dem funktioniert deine (geniale) Funktion GetPaperSizeIndex. Problem klar? Danke schonmal! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:42 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz