HTMLPrintDialog mit PB unter Windows

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
TroaX
Beiträge: 659
Registriert: 08.03.2013 14:27
Computerausstattung: PC: Ryzen 9 3950X, 96 GB RAM, RX6800XT, 2.5 TB SSD, 21:9 Display, Pop_OS! | Lappi: Ryzen 7 5800H, 16 GB RAM, 1 TB SSD, Pop_OS!
Wohnort: NRW
Kontaktdaten:

Re: HTMLPrintDialog mit PB unter Windows

Beitrag von TroaX »

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.
PC: Ryzen 9 3950X | 96 GB RAM | RX6800XT | 2,5 TB NVMe | Pop_OS!
Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Pop_OS!
NAS: Fritz.Box :lol:
Coding: Purebasic 6.04 | PHP | HTML | CSS | Javascript
Benutzeravatar
TheCube
Beiträge: 150
Registriert: 20.07.2010 23:59
Computerausstattung: Risen 3400G 16MB Win10-64Bit
Wohnort: NRW

Re: HTMLPrintDialog mit PB unter Windows

Beitrag von TheCube »

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.
Benutzeravatar
TroaX
Beiträge: 659
Registriert: 08.03.2013 14:27
Computerausstattung: PC: Ryzen 9 3950X, 96 GB RAM, RX6800XT, 2.5 TB SSD, 21:9 Display, Pop_OS! | Lappi: Ryzen 7 5800H, 16 GB RAM, 1 TB SSD, Pop_OS!
Wohnort: NRW
Kontaktdaten:

Re: HTMLPrintDialog mit PB unter Windows

Beitrag von TroaX »

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: Alles auswählen

   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: Alles auswählen

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
PC: Ryzen 9 3950X | 96 GB RAM | RX6800XT | 2,5 TB NVMe | Pop_OS!
Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Pop_OS!
NAS: Fritz.Box :lol:
Coding: Purebasic 6.04 | PHP | HTML | CSS | Javascript
Benutzeravatar
TheCube
Beiträge: 150
Registriert: 20.07.2010 23:59
Computerausstattung: Risen 3400G 16MB Win10-64Bit
Wohnort: NRW

Re: HTMLPrintDialog mit PB unter Windows

Beitrag von TheCube »

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.
Benutzeravatar
TroaX
Beiträge: 659
Registriert: 08.03.2013 14:27
Computerausstattung: PC: Ryzen 9 3950X, 96 GB RAM, RX6800XT, 2.5 TB SSD, 21:9 Display, Pop_OS! | Lappi: Ryzen 7 5800H, 16 GB RAM, 1 TB SSD, Pop_OS!
Wohnort: NRW
Kontaktdaten:

Re: HTMLPrintDialog mit PB unter Windows

Beitrag von TroaX »

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.
PC: Ryzen 9 3950X | 96 GB RAM | RX6800XT | 2,5 TB NVMe | Pop_OS!
Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Pop_OS!
NAS: Fritz.Box :lol:
Coding: Purebasic 6.04 | PHP | HTML | CSS | Javascript
Benutzeravatar
TheCube
Beiträge: 150
Registriert: 20.07.2010 23:59
Computerausstattung: Risen 3400G 16MB Win10-64Bit
Wohnort: NRW

Re: HTMLPrintDialog mit PB unter Windows

Beitrag von TheCube »

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 ...
Benutzeravatar
TroaX
Beiträge: 659
Registriert: 08.03.2013 14:27
Computerausstattung: PC: Ryzen 9 3950X, 96 GB RAM, RX6800XT, 2.5 TB SSD, 21:9 Display, Pop_OS! | Lappi: Ryzen 7 5800H, 16 GB RAM, 1 TB SSD, Pop_OS!
Wohnort: NRW
Kontaktdaten:

Re: HTMLPrintDialog mit PB unter Windows

Beitrag von TroaX »

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 ;)
PC: Ryzen 9 3950X | 96 GB RAM | RX6800XT | 2,5 TB NVMe | Pop_OS!
Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Pop_OS!
NAS: Fritz.Box :lol:
Coding: Purebasic 6.04 | PHP | HTML | CSS | Javascript
Antworten