Bug?
-
- Beiträge: 285
- Registriert: Mi 20. Feb 2013, 10:30
- OS, Lazarus, FPC: Win (L 2.2.4 FPC 3.2.2)
- CPU-Target: 32/64,ARM(RPi)
Bug?
Hallo Experten,
es gibt ein allgemeines Fenomen in Lazarus.
Bei bestimmten Druckern im 64 Bit Windowssystem kann man aus dem HTML Panel mit "IpHtmlPanel1.PrintPreview" nicht drucken. Nichts passiert.
Auf meinem System geht es mit einem OKI Netzwerk Drucker nicht.
Der Drucker hat vier Emulationen "Fax, PS, PCL, PCL-XPS'. Die Druckausgabe funktioniert nur mit Fax und PS Emulation.
Bei einem Bekannten geht es nicht mit Adobe-PDF und Del-Laser Drucker nicht, ebenfalls 64 Bit Win.
Folgendes habe ich beobachtet, man öffnet die Druckerwarteschlange des nicht Funktionierenden Druckers zu Kontrolle.
Wird ein Druck über ".PrintPreview" gestartet, das heißt, das Print preview Fenster öffnet sich und der Drucher wird ausgewählt,
so ist der Druckauftrag mit der Vorschau im Preview und schon in der Warteschlange zu sehen.
Wird dann der Print Button betätigt verschwindet der Druckauftag aus der Warteschlange ohne dass gedruckt wurde.
Bei einem Funktionierenden Drucker verhält sich alles normal, Warteschlange leer Print-Button und so weiter.
Weis hier jemand rat, es scheint das hier unter bestimmten Emulationen Lazarus nicht richtig Funktioniert.
Übrigens die besagten Drucker funktionieren nur nicht unter Lazarus.
Gruß
es gibt ein allgemeines Fenomen in Lazarus.
Bei bestimmten Druckern im 64 Bit Windowssystem kann man aus dem HTML Panel mit "IpHtmlPanel1.PrintPreview" nicht drucken. Nichts passiert.
Auf meinem System geht es mit einem OKI Netzwerk Drucker nicht.
Der Drucker hat vier Emulationen "Fax, PS, PCL, PCL-XPS'. Die Druckausgabe funktioniert nur mit Fax und PS Emulation.
Bei einem Bekannten geht es nicht mit Adobe-PDF und Del-Laser Drucker nicht, ebenfalls 64 Bit Win.
Folgendes habe ich beobachtet, man öffnet die Druckerwarteschlange des nicht Funktionierenden Druckers zu Kontrolle.
Wird ein Druck über ".PrintPreview" gestartet, das heißt, das Print preview Fenster öffnet sich und der Drucher wird ausgewählt,
so ist der Druckauftrag mit der Vorschau im Preview und schon in der Warteschlange zu sehen.
Wird dann der Print Button betätigt verschwindet der Druckauftag aus der Warteschlange ohne dass gedruckt wurde.
Bei einem Funktionierenden Drucker verhält sich alles normal, Warteschlange leer Print-Button und so weiter.
Weis hier jemand rat, es scheint das hier unter bestimmten Emulationen Lazarus nicht richtig Funktioniert.
Übrigens die besagten Drucker funktionieren nur nicht unter Lazarus.
Gruß
Re: Bug?
Hoi,
ich kann dir zur Zeit keinen Ratschlag geben, muss aber leider dieses Phänomen bestätigen (war mir bis dato gar nicht aufgefallen). Allerdings ist dies keines vom TIpHtmlPanel, sondern von TPrinter.
Mehrere Projekte, die auf TPrinter zugreifen (mit Lazreport, TIpHtmlPanel, mein Organizer) zeigen das gleiche Verhalten, unabhängig davon, ob ich Lazarus 1.5Trunc oder 1.2.6 nehme. Die meisten Drucker funktionieren. Komischerweise funktioniert an dem Rechner, an dem ich gerade sitze und zumeist entwickle, ein Drucker (per LAN verbunden) nicht, obwohl der gleiche Drucker (mit WLAN verbunden) an meinem Klapprechner (beide Win7 64bit) funktioniert (dort nutze ich eigentlich täglich diesen Drucker mit meinem unter Lazarus entwickelten Organizer)
ich kann dir zur Zeit keinen Ratschlag geben, muss aber leider dieses Phänomen bestätigen (war mir bis dato gar nicht aufgefallen). Allerdings ist dies keines vom TIpHtmlPanel, sondern von TPrinter.
Mehrere Projekte, die auf TPrinter zugreifen (mit Lazreport, TIpHtmlPanel, mein Organizer) zeigen das gleiche Verhalten, unabhängig davon, ob ich Lazarus 1.5Trunc oder 1.2.6 nehme. Die meisten Drucker funktionieren. Komischerweise funktioniert an dem Rechner, an dem ich gerade sitze und zumeist entwickle, ein Drucker (per LAN verbunden) nicht, obwohl der gleiche Drucker (mit WLAN verbunden) an meinem Klapprechner (beide Win7 64bit) funktioniert (dort nutze ich eigentlich täglich diesen Drucker mit meinem unter Lazarus entwickelten Organizer)
Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection;
-
- Beiträge: 203
- Registriert: Di 22. Sep 2009, 13:08
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
Re: Bug?
Ist das Lazarus-Programm 32-bit oder 64-bit?
Beim 64-bit Compiler (2.6.4) gibt es wohl so ein Problem mit externen Exceptions,
die in so einer Situation ein Problem machen könnten.
Ansonsten würde ich aus Erfahrung sagen:
Schuld an Druckerproblemen ist fast immer ein fehlerhafter Druckertreiber..
Beim 64-bit Compiler (2.6.4) gibt es wohl so ein Problem mit externen Exceptions,
die in so einer Situation ein Problem machen könnten.
Ansonsten würde ich aus Erfahrung sagen:
Schuld an Druckerproblemen ist fast immer ein fehlerhafter Druckertreiber..
Re: Bug?
...UPS... in meinem Fall kein fehlender, sondern zu viele Drucktreiber. Ich habe den falschen Drucker gewählt (hatte noch das Vorgängermodell installiert), kann das daher doch nicht bestätigen.
Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection;
-
- Beiträge: 285
- Registriert: Mi 20. Feb 2013, 10:30
- OS, Lazarus, FPC: Win (L 2.2.4 FPC 3.2.2)
- CPU-Target: 32/64,ARM(RPi)
Re: Bug?
Hallo, was zu viele Druckertreiber?
Bei dem Bekannten, er hat das Adobe Suit Installiert,
also Druckertreiber Adobe PDF und Del-Laeser.
Bei keinem der Drucker Funktioniert es.
Dann wurde PDF-Creator installiert und damit geht es.
Projekte sind 32 Bit auf Windows 64 Bit Betriebssysteme.
Was kann man denn tun, wenn der Fehler auftritt?
Auf eine neue Version von von TPrinter warten?
Scheint ja bei den verschiedensten Systemen so zu sein.
Bei dem Bekannten, er hat das Adobe Suit Installiert,
also Druckertreiber Adobe PDF und Del-Laeser.
Bei keinem der Drucker Funktioniert es.
Dann wurde PDF-Creator installiert und damit geht es.
Projekte sind 32 Bit auf Windows 64 Bit Betriebssysteme.
Was kann man denn tun, wenn der Fehler auftritt?
Auf eine neue Version von von TPrinter warten?
Scheint ja bei den verschiedensten Systemen so zu sein.
Re: Bug?
Was kann man denn tun, wenn der Fehler auftritt?
Lazarus ist OpenSource --> in den Quellcode gucken. Da siehst du dann z.B. dass alle Print-Methoden mit IFDEF ausgeklammert sind. Aktiviere mal das Define Html_Print, vielleicht geht's dann. Dass das Drucken deaktiviert ist, kann natürlich auch heißen, dass der Autor da noch größere Probleme hat...
Zuletzt geändert von wp_xyz am Do 5. Feb 2015, 13:13, insgesamt 1-mal geändert.
Re: Bug?
Ich glaube nicht, dass es zwingend etwas mit dem TIpHtmlPanel zu tun haben muss, da dieses, wie LazReport, letztendlich nur auf TPrinter zurückgreift.
@hbr: Hast Du mal ein anderes Beispiel z.B. von LazReport getestet, ob dort ebenfalls die Drucker nicht funktionieren?!
Das ist erst im Trunc so, in den offiziellen Releases bis 1.2.6 gibt es diese Definition noch nicht. Evtl. hat das etwas mit der Delphi-Kompatibiltät zu tun?! Ich musste das im Trunc auch erst setzen.wp_xyz hat geschrieben:Da siehst du dann z.B. dass alle Print-Methoden mit IFDEF ausgeklammert sind. Aktiviere mal das Define Html_Print, vielleicht geht's dann. Das das Drucken deaktiviert ist, kann natürlich auch heißen, dass der Autor da noch größere Probleme hat...
@hbr: Hast Du mal ein anderes Beispiel z.B. von LazReport getestet, ob dort ebenfalls die Drucker nicht funktionieren?!
Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection;
-
- Beiträge: 285
- Registriert: Mi 20. Feb 2013, 10:30
- OS, Lazarus, FPC: Win (L 2.2.4 FPC 3.2.2)
- CPU-Target: 32/64,ARM(RPi)
Re: Bug?
@Michl: habe soeben versucht aus "dbf_demo" mit dem besagten Drucker zu drucken.
Funktioniert einwandfrei.
Ich habe auch die iphtml und iphtmlpv von 1.06 versucht, es ist Versions unabhängig.
Fehler besteht weiterhin.
Funktioniert einwandfrei.
Ich habe auch die iphtml und iphtmlpv von 1.06 versucht, es ist Versions unabhängig.
Fehler besteht weiterhin.
Re: Bug?
Kannst du ein Minimalbeispiel (als Zip, ohne Executable) hier hochladen, was das besagte Fehlverhalten zeigt?!
Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection;
-
- Beiträge: 285
- Registriert: Mi 20. Feb 2013, 10:30
- OS, Lazarus, FPC: Win (L 2.2.4 FPC 3.2.2)
- CPU-Target: 32/64,ARM(RPi)
Re: Bug?
Hier ein Minimalbeispiel.
Fehler tritt aber nur bei den bestimmten Druckern auf.
Bei Auswahl des besagten Druckers steht der Druckauftrag schon in der Druckerwareschlange ohne dass gedruckt wurde.
Bei klick auf Print verschwindet dieser ohne zu drucken.
Fehler tritt aber nur bei den bestimmten Druckern auf.
Bei Auswahl des besagten Druckers steht der Druckauftrag schon in der Druckerwareschlange ohne dass gedruckt wurde.
Bei klick auf Print verschwindet dieser ohne zu drucken.
- Dateianhänge
-
- html_prevwiew_test.zip
- (263.72 KiB) 103-mal heruntergeladen
Re: Bug?
Mannoh - bist du ein Angestellter der Drucker-Tintenhersteller? Warum muss das Demo-Programm 7 Seiten drucken? Bei meinem Epson Stylus wird jedenfalls gedruckt (Win62, aber Laz 32-bit). Die im ersten Post erwähnten Drucker habe ich nicht...
-
- Beiträge: 285
- Registriert: Mi 20. Feb 2013, 10:30
- OS, Lazarus, FPC: Win (L 2.2.4 FPC 3.2.2)
- CPU-Target: 32/64,ARM(RPi)
Re: Bug?
Also Hier mal zwei Screenshot's:
Bild01 vor dem Drucken,
Bild02 Druckbutton "drucken" betätigt.
Hier zeigt sich das der Druckauftrag mit Auswahl des nicht funktionierenden Druckers bereits jetzt in der Warteschlange existiert,
obwohl der Print Button noch nicht betätigt wurde.
nachdem man den Button "Print" betätigt passiert nichts und der Druck in der Warteschlange verschwindet,
Zustand wie Bild01.
Bei einem funktionierenden Drucker wird der Auftrag nicht vor Betätigung des Print Buttons in die Warteschlange übergeben.
@wp_xyz: Natürlich zeigt sich das nur bei den nicht funktionierenden Druckern.
Bild01 vor dem Drucken,
Bild02 Druckbutton "drucken" betätigt.
Hier zeigt sich das der Druckauftrag mit Auswahl des nicht funktionierenden Druckers bereits jetzt in der Warteschlange existiert,
obwohl der Print Button noch nicht betätigt wurde.
nachdem man den Button "Print" betätigt passiert nichts und der Druck in der Warteschlange verschwindet,
Zustand wie Bild01.
Bei einem funktionierenden Drucker wird der Auftrag nicht vor Betätigung des Print Buttons in die Warteschlange übergeben.
@wp_xyz: Natürlich zeigt sich das nur bei den nicht funktionierenden Druckern.
Zuletzt geändert von hbr am Do 5. Feb 2015, 20:32, insgesamt 1-mal geändert.
Re: Bug?
Der einzigste "Drucker", mit dem ich ein leeres Canvas habe herstellen können (alle anderen funktionierten) ist der "Microsoft XPS Document Writer". Ich habe mal den PaintBuffer eingeschaltet, dann hat er Daten geschrieben. Ob das bei dir auch funktioniert, kann ich nicht sagen aber du probieren
Ersetze mal "False" mit "True" in der Unit IpHtml, Zeile 13064 (zumindest in der Trunc-Version):
Ersetze mal "False" mit "True" in der Unit IpHtml, Zeile 13064 (zumindest in der Trunc-Version):
Code: Alles auswählen
procedure TIpHtmlInternalPanel.PrintPages(FromPage, ToPage: Integer);
...
for i := FromPage to ToPage do begin
CR.Top := (i - 1) * PrintHeight;
CR.Bottom := Cr.Top + PrintHeight;
Hyper.Render(Printer.Canvas, CR, True, PrintTopLeft); //<-- hier
...
Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection;
-
- Beiträge: 285
- Registriert: Mi 20. Feb 2013, 10:30
- OS, Lazarus, FPC: Win (L 2.2.4 FPC 3.2.2)
- CPU-Target: 32/64,ARM(RPi)
Re: Bug?
Hallo Michl,
bei mir ist die besagte Zeile in 17785 Hyper.Render(Printer.Canvas, CR,
Aber leider funktioniert es immer noch nicht, der Auftrag ist weiterhin mit öffnen des Prewiew schon in der Warteschlange.
bei mir ist die besagte Zeile in 17785 Hyper.Render(Printer.Canvas, CR,
Aber leider funktioniert es immer noch nicht, der Auftrag ist weiterhin mit öffnen des Prewiew schon in der Warteschlange.
Re: Bug?
Ja schade, ein Versuch war es wert...hbr hat geschrieben:Aber leider funktioniert es immer noch nicht, der Auftrag ist weiterhin mit öffnen des Prewiew schon in der Warteschlange.
Du meinst, du klickst auf "Drucken" (deinem Button2) und schon ist der Druckauftrag ausgelöst?! Oder wählst du "Select Printer" im "Print preview" und der Druckauftrag wird dann dort sofort ausgelöst?
Du könntest ja auch mal debuggen und schauen, wo genau der Druckauftrag ausgelöst wird.
Code: Alles auswählen
procedure TMainForm.Button2Click(Sender: TObject);
begin
IpHtmlPanel1.PrintPreview; //hier Breakpoint setzen und immer mit F7 usw. durch den Code steppen, bis der Druckauftrag ausgelöst wird
end;
Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection;