PureBoard
http://forums.purebasic.com/german/

HTMLPrintDialog mit PB unter Windows
http://forums.purebasic.com/german/viewtopic.php?f=8&t=31140
Seite 2 von 2

Autor:  TroaX [ 24.10.2018 15:56 ]
Betreff des Beitrags:  Re: HTMLPrintDialog mit PB unter Windows

Jopp. Den Thread habe ich komplett vergessen. habe aber auch seitdem kaum noch Zeit gehabt, irgendwas zu machen. Und das ganze gefrickel mit dem Schattenserver war mir dann auch nervig geworden. Mir kam es schlicht falsch vor, einen kleinen integrierten Webserver zu schreiben, der am Ende die Header-Daten ignoriert und nicht sauber validiert, ob alles richtig läuft. HTTP sieht im ersten Moment so schön einfach aus. Aber wenn man sowas zu Fuß schreiben muss, merkt man erst, wie nervig Fleißarbeit werden kann. Und der Nutzen stand dann dem Aufwand dann doch deutlichst hinten an.

Autor:  TheCube [ 24.10.2018 23:00 ]
Betreff des Beitrags:  Re: HTMLPrintDialog mit PB unter Windows

Auf meinem recht langsamen Win7-32 Rechner (PB5.61) hatte ich einen seltsamen Effekt mit dem Codebeispiel.

Die Druckvorschau poppte meist nur kurz auf .. und ein Druckauswahlfenster kam nicht. (Mit und ohne Debugger.)
So ca. jedes 3-5 Mal starten klappte es dann doch noch. :shock:

Mein Workaround:
Delay (100) hinzufügen nach letzter Programmzeile HTMLPrintDialog(HTMLContent, "h1 { color: red; }")

Das PB-Program war wohl einfach zu schnell fertig und beendet.

Autor:  TroaX [ 25.10.2018 07:02 ]
Betreff des Beitrags:  Re: HTMLPrintDialog mit PB unter Windows

TheCube hat geschrieben:
Mein Workaround:
Delay (100) hinzufügen nach letzter Programmzeile HTMLPrintDialog(HTMLContent, "h1 { color: red; }")

Das PB-Program war wohl einfach zu schnell fertig und beendet.

Oder statt:
Code:
   Repeat
     Event = WaitWindowEvent()
     If Event = #PB_Event_Gadget
        If EventGadget() = PrintDialog And EventType() = #PB_EventType_TitleChange
           Break
        EndIf
     EndIf
   Until Event = #PB_Event_CloseWindow
   CloseWindow(Window)


eben so:
Code:
Repeat
     Event = WaitWindowEvent()
     If Event = #PB_Event_Gadget
        If EventGadget() = PrintDialog And EventType() = #PB_EventType_TitleChange
           If GetGadgetItemText(PrintDialog,#PB_Web_PageTitle) = "CLOSE"
      break
      EndIf
        EndIf
     EndIf
   Until Event = #PB_Event_CloseWindow
   CloseWindow(Window)


Nicht getestet. Müsste aber gehen ;)

NACHTRAG: Die Variante macht auch mehr Sinn als die originale. Habe den Code im Startpost mal angepasst :D

Autor:  TheCube [ 25.10.2018 19:38 ]
Betreff des Beitrags:  Re: HTMLPrintDialog mit PB unter Windows

Sehr schön ... und sehr viel besser funktionierend. :allright:

So grob jedes 10mal hab ich den Effekt zwar noch, besonders wenn Win7 nach dem Booten
noch mit sich selbst beschäftigt ist. Aber vielleicht ist ja auch einfach nur mein Murkssystem schuld.

Autor:  TroaX [ 25.10.2018 20:39 ]
Betreff des Beitrags:  Re: HTMLPrintDialog mit PB unter Windows

Ist aber schon komisch. Denn die OnFocus-Eventmethode ist seit Jahren gängige Praxis bei Popups. Dies habe ich nur 1zu1 darauf übertragen. Ich suche da nochmal nach weiteren Kniffen, die vielleicht zuverlässiger funktionieren. So etwas darf und sollte nicht passieren. Mal sehen, was sich noch finden lässt. Das Hauptproblem ist aber definitiv der Javascript-Teil. Denn bei dir scheint das Setzen des Fokus auf das Dokument so lange zu dauern, dass das dadurch gefeuerte Event erst nach dem registrieren der Handlers vom IE abgearbeitet wird, wodurch es vorm Dialog zum Schließen des Fensters kommt.

Autor:  TheCube [ 25.10.2018 21:47 ]
Betreff des Beitrags:  Re: HTMLPrintDialog mit PB unter Windows

Vielleicht ist das was du schreibst das sporadische Problem ... oder doch etwas vom Win-System.
Von meiner Seite aus muss da aber wirklich keine Zeit drauf verbraten werden:
Habe den Code zu einer .Exe gemacht (bisher immer aus PB heraus compiliert und gestartet)
und konnte den Fehler in 50 Starts nicht mehr provozieren.

Wer weiss welches Phantom wir da jagen .... :freak:

Edit
Kaum hier geschrieben und noch ein paar Mal probiert passierte der Fehler doch noch mal /:->
Also .Exe-machen ändert doch nichts ...

Autor:  TroaX [ 26.10.2018 15:20 ]
Betreff des Beitrags:  Re: HTMLPrintDialog mit PB unter Windows

TheCube hat geschrieben:
Wer weiss welches Phantom wir da jagen .... :freak:

Keines! Ich weiß ja, was schuld daran ist ;)

Blöderweise funktioniert das onofterprint-Event im Gadget nicht, weswegen ich überhaupt diesen Kniff benutzen muss. Aber ich teste nachher einfach mal, statt dem Onload-Attribut einfach das blanke Javascript in den Kopfbereich zu packen. Mal sehen, was ich da für Möglichkeiten bekomme.

Auch wenn dir das jetzt nicht ganz so wichtig ist, kann ich solch Seiteneffekte nicht ausstehen und behebe sie lieber ;)

Seite 2 von 2 Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/