AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

RAVE 7.7 Printer einstellen

Ein Thema von Kurt56 · begonnen am 26. Mai 2010 · letzter Beitrag vom 26. Mai 2010
Antwort Antwort
Benutzerbild von Kurt56
Kurt56

Registriert seit: 6. Apr 2005
Ort: Wedemark
47 Beiträge
 
Delphi XE8 Professional
 
#1

RAVE 7.7 Printer einstellen

  Alt 26. Mai 2010, 18:51
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:
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;
Delphi compiliert das auch ohne Meldung, aber zur Laufzeit bekomme ich eine Fehlermeldung:

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?
Kurt
  Mit Zitat antworten Zitat
Benutzerbild von Kurt56
Kurt56

Registriert seit: 6. Apr 2005
Ort: Wedemark
47 Beiträge
 
Delphi XE8 Professional
 
#2

Re: RAVE 7.7 Printer einstellen

  Alt 26. Mai 2010, 20:27
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:
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\HPLaserthen
         begin
         klar:=true;
         Druckernummer:=i;
         end;
end;
heraus.

Aber wie kann ich den Drucker in RAVE setzen?
Kurt
  Mit Zitat antworten Zitat
rawi

Registriert seit: 16. Mär 2010
Ort: im Westen Deutschlands
38 Beiträge
 
Delphi 2010 Professional
 
#3

Re: RAVE 7.7 Printer einstellen

  Alt 26. Mai 2010, 20:47
Hallo Kurt56,

Du musst das selectprinter ins onbeforeprint des RvSystem setzen.

Delphi-Quellcode:
procedure TForm1.RvSystem1BeforePrint(Sender: TObject);
begin
  if RvSystem1.BaseReport.SelectPrinter('fax') then
    showmessage('OK')
  else
    showmessage('false');

end;
gruß rawi
  Mit Zitat antworten Zitat
Benutzerbild von Kurt56
Kurt56

Registriert seit: 6. Apr 2005
Ort: Wedemark
47 Beiträge
 
Delphi XE8 Professional
 
#4

Re: RAVE 7.7 Printer einstellen

  Alt 26. Mai 2010, 21:48
Vielen Dank, rawi

Ich habe es jetzt so gelöst:


Delphi-Quellcode:
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\HPLaserthen
         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;
So funktioniert es.
Danke nochmals, darauf wäre ich nie gekommen.
Gruß Kurt
Kurt
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:42 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