Bug?

Für Fehler in Lazarus, um diese von anderen verifizieren zu lassen.
hbr
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?

Beitrag von hbr »

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ß

Michl
Beiträge: 2505
Registriert: Di 19. Jun 2012, 12:54

Re: Bug?

Beitrag von Michl »

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) :shock:

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 

Patito
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?

Beitrag von Patito »

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..

Michl
Beiträge: 2505
Registriert: Di 19. Jun 2012, 12:54

Re: Bug?

Beitrag von Michl »

...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. :oops:

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 

hbr
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?

Beitrag von hbr »

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.

wp_xyz
Beiträge: 4889
Registriert: Fr 8. Apr 2011, 09:01

Re: Bug?

Beitrag von wp_xyz »

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.

Michl
Beiträge: 2505
Registriert: Di 19. Jun 2012, 12:54

Re: Bug?

Beitrag von Michl »

Ich glaube nicht, dass es zwingend etwas mit dem TIpHtmlPanel zu tun haben muss, da dieses, wie LazReport, letztendlich nur auf TPrinter zurückgreift.

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...
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.

@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; 

hbr
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?

Beitrag von hbr »

@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.

Michl
Beiträge: 2505
Registriert: Di 19. Jun 2012, 12:54

Re: Bug?

Beitrag von Michl »

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; 

hbr
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?

Beitrag von hbr »

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.
Dateianhänge
html_prevwiew_test.zip
(263.72 KiB) 103-mal heruntergeladen

wp_xyz
Beiträge: 4889
Registriert: Fr 8. Apr 2011, 09:01

Re: Bug?

Beitrag von wp_xyz »

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...

hbr
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?

Beitrag von hbr »

Also Hier mal zwei Screenshot's:
Bild01 vor dem Drucken,

Bild01.jpg


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.

bild02.jpg

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.

Michl
Beiträge: 2505
Registriert: Di 19. Jun 2012, 12:54

Re: Bug?

Beitrag von Michl »

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 :mrgreen:

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; 

hbr
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?

Beitrag von hbr »

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.

Michl
Beiträge: 2505
Registriert: Di 19. Jun 2012, 12:54

Re: Bug?

Beitrag von Michl »

hbr hat geschrieben:Aber leider funktioniert es immer noch nicht, der Auftrag ist weiterhin mit öffnen des Prewiew schon in der Warteschlange.
Ja schade, ein Versuch war es wert...

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; 

Antworten