Printersettingdialog Anzahl

Rund um die LCL und andere Komponenten
Antworten
Benutzeravatar
Maik81SE
Beiträge: 327
Registriert: Fr 30. Sep 2011, 14:07
OS, Lazarus, FPC: Debian 12 (L 3.4 FPC 3.2.2)
CPU-Target: x86-64; avr
Wohnort: Lübeck
Kontaktdaten:

Printersettingdialog Anzahl

Beitrag von Maik81SE »

Moin @ll...

bei einem Projekt, welches ich aktuell auf dem Zettel habe benötige ich gleichzeitig 4 Netzwerkdrucker der Firma Weidmüller.
3 von denen sind vom selben Typ, laufen jedoch auf ihren eigenen Netzwerkadressen und sind mit entsprechenden Klemmmarkierer (WS 8/5, DEK 5/5 und GEW 15/6 GE) bestückt

Ich würde pauschal dazu dentieren, für jeden Drucker ein eigenes Setting~ und Printdialog zu spendieren.

Nun meine allgemeine Frage an euch.
Würdet ihr dies ebenfalls Pro Drucker handeln oder über einen Dialog für alle Drucker?

Code: Alles auswählen

label.caption:= 'gnublin.no-ip.info'
Debian 12 (L 3.4 FPC 3.2.2);

Geronimo
Beiträge: 24
Registriert: Sa 1. Feb 2025, 23:22
OS, Lazarus, FPC: Winux (L 3.6.0 FPC 3.2.2)
CPU-Target: 64Bit
Wohnort: Hamburg

Re: Printersettingdialog Anzahl

Beitrag von Geronimo »

Moin,
dentieren
Das gefällt mir! Du bist nicht etwa Dentist? :lol:

Ich bin zwar in Linux zu wenig firm, würde aber rein von der Sache her zu einem Dialog tendieren,
in welchem der User den Drucker auswählen kann:
- verfügbare Drucker ermitteln und dem User zur Auswahl servieren
- printer capabilities des ausgewählten Druckers ermitteln und den Dialog entsprechen anpassen.

Deine Wahl hat aus meiner Sicht folgende Nachteile:
  • Da Drucker ziemlich viel gemeinsam haben, würdest du ziemlich viel vierfach implementieren.
  • Und was machst du, wenn plötzlich ein Drucker hinzukommt oder einer gegen ein anderes Fabrikat ausgetauscht wird?
    Willst du dann immer dein Programm anpassen?
Grüße aus Hamburg nach Lübeck
Die Welt ist linear, rechteckig und gaussverteilt.

Benutzeravatar
Jorg3000
Lazarusforum e. V.
Beiträge: 359
Registriert: So 10. Okt 2021, 10:24
OS, Lazarus, FPC: Win64
Wohnort: NRW

Re: Printersettingdialog Anzahl

Beitrag von Jorg3000 »

Moin! (endlich weiß ich, dass ich das von mir heißgeliebte "Moin" mal in die richtige Region sende)

Ich wäre gar nicht auf die Idee gekommen, für jeden Drucker einen eigenen Auswahl/Settings/Page-Dialog zu erstellen. Ich finde die Idee gerade super!
Das hätte doch den Vorteil, dass jeder vorhandene Dialog immer noch die passenden Einstellungen enthält, die der User zuvor (in dieser Sitzung) schon mal ausgewählt hat, oder?

Und ist die Verwendung der Drucker auch an bestimmte Aufgaben/Programmteile gebunden?
Dann könnte jeder Programmteil sofort schon den richtigen Dialog aufrufen. Dazu könnte man die Dialoge in einem globalen Array ablegen, z.B. PrinterSettingsDialog[3] für Aufgabenart 3.

Oder war etwas völlig anderes gemeint?
Grüße, Jörg

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6762
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Printersettingdialog Anzahl

Beitrag von af0815 »

Ein Dialog, wenn möglich. Dafür die Einstellungen speichern und beim nächsten Aufruf des Dialogs voreinstellen.

Wobei bei diesen Spezialdruckern es oft so ist, das der Benutzer oft gar nicht viel konfigurieren sollte. Erfahrungsgemäss wird dann gerne ein Fehler durch Konfigurationsänderung versteckt. Über mehrere Benutzer kann sich sowas zu einem unbrauchbaren Drucker aufschaukeln. Erfahrung aus der Praxis in einen mehrschichtigem Betrieb. Bsp. statt die Führungen zu reinigen einfach die Positionen manipulieren. Der was dann sauber arbeitet und putzt hat die A...Karte.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Joh
Lazarusforum e. V.
Beiträge: 280
Registriert: Sa 26. Mai 2012, 17:31
OS, Lazarus, FPC: Win 10 (L 2.2.6 x64 FPC 3.2.2)
CPU-Target: 64Bit

Re: Printersettingdialog Anzahl

Beitrag von Joh »

Jorg3000 hat geschrieben: Di 18. Feb 2025, 08:02 Moin! (endlich weiß ich, dass ich das von mir heißgeliebte "Moin" mal in die richtige Region sende)
Dito Moin,
Jorg3000 hat geschrieben: Di 18. Feb 2025, 08:02 Und ist die Verwendung der Drucker auch an bestimmte Aufgaben/Programmteile gebunden?
Dann könnte jeder Programmteil sofort schon den richtigen Dialog aufrufen. Dazu könnte man die Dialoge in einem globalen Array ablegen, z.B. PrinterSettingsDialog[3] für Aufgabenart 3.
Das klingt mir schon fast nach einer Arztsoftware; Kassenrezept, Privatrezept, BTM-Rezept, Schwangerschaftsnachweis...
A4, A5hoch, A5quer, A6quer, A6hoch
just my two Beer

Benutzeravatar
Jorg3000
Lazarusforum e. V.
Beiträge: 359
Registriert: So 10. Okt 2021, 10:24
OS, Lazarus, FPC: Win64
Wohnort: NRW

Re: Printersettingdialog Anzahl

Beitrag von Jorg3000 »

Joh hat geschrieben: Di 18. Feb 2025, 08:45Das klingt mir schon fast nach einer Arztsoftware
Er hat doch geschrieben, dass er Dentist ist. :wink: :lol:

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6762
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Printersettingdialog Anzahl

Beitrag von af0815 »

Firma Weidmüller. ... sind mit entsprechenden Klemmmarkierer (WS 8/5, DEK 5/5 und GEW 15/6 GE) bestückt
Na ja, schaut nicht nach Dentist aus :-) Das sind spezielle Drucker für das Erstellen von Markierungsschilder/chen im Maschinenbaubereich.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
Zvoni
Beiträge: 363
Registriert: Fr 5. Jul 2024, 08:26
OS, Lazarus, FPC: Windoof 10 Pro (Laz 2.2.2 FPC 3.2.2)
CPU-Target: 32Bit
Wohnort: BW

Re: Printersettingdialog Anzahl

Beitrag von Zvoni »

Joh hat geschrieben: Di 18. Feb 2025, 08:45
Jorg3000 hat geschrieben: Di 18. Feb 2025, 08:02 Moin! (endlich weiß ich, dass ich das von mir heißgeliebte "Moin" mal in die richtige Region sende)
Dito Moin,
Jorg3000 hat geschrieben: Di 18. Feb 2025, 08:02 Und ist die Verwendung der Drucker auch an bestimmte Aufgaben/Programmteile gebunden?
Dann könnte jeder Programmteil sofort schon den richtigen Dialog aufrufen. Dazu könnte man die Dialoge in einem globalen Array ablegen, z.B. PrinterSettingsDialog[3] für Aufgabenart 3.
Das klingt mir schon fast nach einer Arztsoftware; Kassenrezept, Privatrezept, BTM-Rezept, Schwangerschaftsnachweis...
A4, A5hoch, A5quer, A6quer, A6hoch
Ich hätte es anderstherum formuliert: Den Druckerdialog brauchste ja im Prinzip nur einmal, um eben die Einstellungen für genau diesen Programm-Teil mit diesem Drucker zu setzen (und dann zu speichern).
Ich kenne das von der UPS WorldShip Software:
1 x Drucker-Config für Etiketten (Bixolon-Drucker)
1 x Drucker-Config für Versand-Manifest (Laser-Drucker)
1 x Drucker-Config für Zusammenfassung (Laser-Drucker)

Einmal konfiguriert (und gespeichert), Feuer Frei!
Den Drucker-Dialog selbst brauchste danach nicht mehr
Ein System sie alle zu knechten, ein Code sie alle zu finden,
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.

Benutzeravatar
Maik81SE
Beiträge: 327
Registriert: Fr 30. Sep 2011, 14:07
OS, Lazarus, FPC: Debian 12 (L 3.4 FPC 3.2.2)
CPU-Target: x86-64; avr
Wohnort: Lübeck
Kontaktdaten:

Re: Printersettingdialog Anzahl

Beitrag von Maik81SE »

Moin @ll,

danke erst mal für euer Feedback.
Bin in der letzten Zeit erst mal an dem "Editor" im Kern geblieben und habe mir die Drucker für später aufgehoben.
Da ich die von mir genutzen Drucker zum Glück fest im LAN habe, bin ich am Überlegen, das ich mir die Druckdialoge inkl. Settings einfach spare und die 4 Primären Drucker einfach fest einprogrammiere.

Da wir zu den 4 Druckern noch 2 als Backup haben, welche in der Konstuktion stehen, werde will ich diese als BackUp/Ersatzdrucker einprogrammieren und gleich so, das diese automatisch ausgewählt werden, wenn der Primärdrucker nicht zur Verfügung steht.

Für den Anfang würde ich es ggf auf diesem Weg versuchen.
Natürlich ist dies erst mal nur ein Gedankengang und alle Variablen sind dadurch noch nicht fest.

Code: Alles auswählen

uses Printers;

procedure SetFixedPrinter(Primary, Backup: string);
var
  i: Integer;
begin
  for i := 0 to Printer.Printers.Count - 1 do
  begin
    if Printer.Printers[i] = Primary then
    begin
      Printer.PrinterIndex := i;
      Exit;
    end;
  end;
  // Falls Primärdrucker nicht gefunden wird, Backup verwenden
  for i := 0 to Printer.Printers.Count - 1 do
  begin
    if Printer.Printers[i] = Backup then
    begin
      Printer.PrinterIndex := i;
      Exit;
    end;
  end;
end;

begin
  // Drucker für WS8/5 festlegen
  SetFixedPrinter('Weidmüller MultiMark WS8/5', 'Ersatzdrucker WS8/5');

  Printer.BeginDoc;
  Printer.Canvas.TextOut(100, 100, 'Testdruck für WS8/5');
  Printer.EndDoc;
end.
Gründe können Störungen im Netzwerk sein, wenn HelTo mal wieder am Server spielt, der Drucker einfach nicht nach dem TimeOut nicht gefunden werden kann oder der entsprechende Drucker technisch gerade zur Repatur/Wartung ist.

Somit komme ich in der Summe auf 7 Drucker, welche verwaltet werden müssen.
Nachteil nur, wenn wir iwan, von Weidmüller auf Phoenixdrucker umsteigen, könnte es natürlich eine Anpassung der entsprechenden Zeilen bedeuten, wenn unsere IT es nicht hinbekommt, die aktuellen IP-Adressen zu verwenden.

Das einzige, was ich aber nicht auf dem Zettel habe, ist ob mPrint-Pro einen RAW-Datenstrom und eventuelle Steuerbefehle verwendet.
Dafür muß ich mir mal einen ausgedienten mit nach hause nehmen und die Kommunikation scannen.

Code: Alles auswählen

label.caption:= 'gnublin.no-ip.info'
Debian 12 (L 3.4 FPC 3.2.2);

Antworten