![]() |
RAVE 7.7 Printer einstellen
Kann es sein, daß in RAVE ein Fehler ist, oder bin ich einfach nur zu dumm?????
In Printer.printers; sind doch die dem System bekannten Drucker (auch Netzwerkdrucker) verzeichnet. In der Dokumentation steht, daß es eine Funktion geben soll, die den Drucker setzen kann. "Diese Methode setzt den aktuellen Drucker auf den ersten drucker in Printer.printers, der den angegebenen Substring in seinem Namen hat. "ExactMatch" bestimmt weiterhin, ob eine genaue Übereinstimmung des Substrings mit dem Druckernamen vorliegen muß, oder nicht. Wenn kein Drucker mit dem Namen (oder Namensteil) gefunden wurde, so wird der aktuelle Drucker nichte geändert und "false" zurück gegeben." (Von mir frei übersetzt, ich hoffe aber, dem Sinn gemäß richtig.) function SelectPrinter(SubStr: string; ExactMatch: Boolean): Boolean; --- demnach müßte folgender Code laufen: ----
Delphi-Quellcode:
Delphi compiliert das auch ohne Meldung, aber zur Laufzeit bekomme ich eine Fehlermeldung:
RVProject1.Open;
if RvSystem1.BaseReport.SelectPrinter('\\Server1\HPLaser') then //<-- Ist der Netzwerkdrucker "\\Server1\HPLaser da? begin RvSystem1.DefaultDest:=rdPrinter; //wenn ja, sofort auf diesen Drucker drucken RvSystem1.SystemSetups := RvSystem1.SystemSetups - [ssAllowSetup]; end else begin RvSystem1.DefaultDest:=rdPreview; // wenn nein, Auswahl und Preview anzeigen RvSystem1.SystemSetups := RvSystem1.SystemSetups + [ssAllowSetup]; end; If RvProject1.Active then begin RvProject1.ExecuteReport('Buchungen'); RVProject1.Close; end; EAccessViolation mit der Meldung 'Zugriffsverletzung bei Adresse 005b3358 in Modul 'Projekt1.Exe'. Lesen von Adresse 00000025D' aufgetreten Was zum Kuckuk mache ich falsch???? Kann mir jemand einen Rat geben? |
Re: RAVE 7.7 Printer einstellen
Es geht "nur" darum, für RAVE den Drucker zu belegen, gleochgültig was an dem Arbeitsplatz für ein Standard-Drucker eingestellt ist.
OB der bestimmte Netzwerkdrucker überhaupt vorhanden ist, daß bekommt man auch mit
Delphi-Quellcode:
heraus.
var i, Druckernummer : nteger;
begin listbox1.Clear; klar:=false; listbox1.Items := Printer.printers; for i := 0 to listbox1.Count - 1 do if listbox1.Items[i] = '\\Server1\HPLaser' then begin klar:=true; Druckernummer:=i; end; end; Aber wie kann ich den Drucker in RAVE setzen? |
Re: RAVE 7.7 Printer einstellen
Hallo Kurt56,
Du musst das selectprinter ins onbeforeprint des RvSystem setzen.
Delphi-Quellcode:
gruß rawi
procedure TForm1.RvSystem1BeforePrint(Sender: TObject);
begin if RvSystem1.BaseReport.SelectPrinter('fax') then showmessage('OK') else showmessage('false'); end; |
Re: RAVE 7.7 Printer einstellen
Vielen Dank, rawi
Ich habe es jetzt so gelöst:
Delphi-Quellcode:
So funktioniert es.
procedure TForm1.DruckButtonClick(Sender: TObject);
var i : integer; DruckerGefunden : boolean; begin listbox1.Clear; DruckerGefunden:=false; listbox1.Items := Printer.printers; for i := 0 to listbox1.Count - 1 do if listbox1.Items[i] = '\\Server1\HPLaser' then begin DruckerGefunden:=true; end; RVProject1.Open; if DruckerGefunden then //<-- Ist der Netzwerkdrucker "\\Server1\HPLaser da? begin RvSystem1.DefaultDest:=rdPrinter; //wenn ja, sofort auf diesen Drucker drucken RvSystem1.SystemSetups := RvSystem1.SystemSetups - [ssAllowSetup]; end else begin RvSystem1.DefaultDest:=rdPreview; // wenn nein, Auswahl und Preview anzeigen RvSystem1.SystemSetups := RvSystem1.SystemSetups + [ssAllowSetup]; end; If RvProject1.Active then begin RvProject1.ExecuteReport('Buchungen'); RVProject1.Close; end; end; procedure TForm1.RvSystem1BeforePrint(Sender: TObject); begin if not RvSystem1.BaseReport.SelectPrinter('\\Server1\HPLaser') then showmessage('Achtung: Fehler bei der Druckerzuweisung'); end; Danke nochmals, darauf wäre ich nie gekommen. Gruß Kurt |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:27 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