Drucken über Netzwerkdrucker



  • Hallo zusammen,

    ich möchte gerne von verschiedenen Rechnern aus einen QuickReport
    über einen Netzwerkdrucker drucken. Mit

    QuickRep1->PrinterSettings->PrinterIndex =
    Printer()->Printers->IndexOf("Brother HL-1270N series an BLP1");
    QuickRep1->Print();
    

    klappt das allerdings nur bei unserem Netzwerkdrucker (Brother),
    dessen Software auch auf dem jeweiligen Rechner installiert ist.

    Sobald ich jedoch auf einen Netzwerkdrucker zugreifen will, wo
    die Software nicht installiert ist, z.B.

    ...Printers->IndexOf("Testdrucker an \\TUX\faxprint");
    

    wird immer der Standarddrucker verwendet.

    Gibt es eine Möglichkeit, wie man ohne Installation auf den
    Netzwerkdrucker zugreifen kann oder muss ich auf jedem
    Anwender-PC die Druckersoftware installieren??

    Gruß
    Michael



  • hast du den drucker denn auch ausgewählt???

    Printer()->PrinterIndex = -1; // standarddrucker
    


  • Ich denke schon, da ja

    [cpp]
    QuickRep1->PrinterSettings->PrinterIndex =
    **Printer()->Printers->IndexOf("Brother HL-1270N series an BLP1");
    **[/cpp]
    die entsprechende Zahl aus der Liste der verfügbaren Drucker zurückgibt.



  • Meiner Meinung nach musst du den Druckertreiber auf jeden Fall immer auch lokal installieren.
    Oder kannst du aus anderen Anwendungen (zB. Word) heraus direkt auf deinen Tux-Drucker zugreifen?



  • Ja, das klappt, übrigens auch dann, wenn ich vom "Preview" des QuickReports die Druckereinrichtung verwende und dort den Netzwerkdrucker direkt auswähle. 😕



  • Nennt mich naiv, aber....

    hast du dir mal den Rückgabewert angesehen?
    Wenn er den String in der globalen Printervariable nicht findet gibt IndexOf ja -1 als Default zurück.

    Und nochwas.. ändert sich der Drucker wenn du dem PrinterIndex mal testweise einen Wert zuweist?

    Wahrscheinlich hast du schon dran gedacht aber ad-hoc fällt mir grad nichts anderes ein *g*



  • Zur Sicherheit habe ich mir die Strings der verfügbaren Drucker in einer
    ListBox anzeigen lassen:

    TPrinter * printer;
    printer = Printer();
    ListBox1->Items->Assign (printer->Printers);
    

    In dieser Liste hat der Testdrucker den Wert 0. Wenn ich den Wert direkt verwende, klappt es. Du hast also recht, dass er meinen String nicht kennt und -1 zurückgibt. Aber warum?? Bei den anderen funktioniert es doch auch.

    Das Problem ist, dass bei den Anwendern höchst wahrscheinlich verschiedene Drucker in verschiedenen Reihenfolgen installiert sind, so dass mir der Zugriff über den Listenwert nichts bringt.

    Trotzdem danke schon mal für die Hilfe!!
    Hat jemand vielleicht noch eine Idee?



  • Das fällt mir ja jetzt erst auf: müssen nicht die Backslashes in "\\TUX\faxprint" verdoppelt werden, da sie sonst als Steuerzeichen interpretiert werden? Also "Testdrucker an \\\TUX\\faxprint".



  • Das ist es 🙂 🙂

    Mensch Jansen, da wäre ich niemals drauf gekommen. Vielen Dank für die Mühe und den Tipp!!!

    Gruß
    Michael


Anmelden zum Antworten