Seite 1 von 1

WebGadget refresht nicht immer

Verfasst: 13.09.2011 09:24
von Kukulkan
Hallo,

ich benutze eine lokale HTML Datei die ich im Browser anzeige (PB4.51, x86):

Code: Alles auswählen

; set browser to display header
SetGadgetText(#webDisplayMessage, "file:///" + strHeaderFile.s) ; browser read from temp
Repeat
    
    Event.l = WaitWindowEvent()    
    GadgetID.l  = EventGadget()
    EventType.l = EventType()
    
    If Event.l = #PB_Event_Gadget
        ; lot of event handling code
    EndIf

    Delay(10)
Until Event.l = #PB_Event_CloseWindow
Unter Windows XP klappt es immer problemlos. Unter Windows 7 bekomme ich von Kunden den Report, dass das Browserfenster sporadisch einfach leer ist (weiss oder grau) und erst neu gezeichnet wird, wenn Sie das Fenster in der Grösse ändern (da mache ich dann ResizeGadget() mit dem Browser-Gadget). Das ist natürlich lästig. Ich hab's schon mit InvalidateRect_(hWin,0,1) und UpdateWindow_(hWin) versucht, aber es brachte keinen Erfolg.

Bei manchen tritt es gar nicht auf, bei anderen sporadisch und bei wieder anderen fast immer. Aber alles sind Windows 7 Rechner. XP scheint immer zu funktionieren. Eine gemeinsamkeit hab ich leider noch nicht gefunden. Manche haben IE8 und manche IE9, keine erkennbare Gemeinsamkeit).

Was ist da los und wie kann ich das beheben?

Grüße,

Kukulkan

Re: WebGadget refresht nicht immer

Verfasst: 13.09.2011 10:08
von Kiffi
versuch mal sowas hier:

Code: Alles auswählen

SetGadgetText(#webDisplayMessage, "file:///" + strHeaderFile.s + "?rnd=" + Str(ElapsedMilliseconds()) ; browser read from temp
sofern es sich bei Dir um ein Cache-Problem handelt, kannst Du es mit dem rnd-Parameter umgehen.

Grüße ... Kiffi

Re: WebGadget refresht nicht immer

Verfasst: 13.09.2011 10:41
von Kukulkan
Hallo Kiffi,

ich hab kein Cache-Problem mit dem laden des HTML. Das ganze Gadget (incl. Rahmen) wird nicht gezeichnet! Sobald ich es resize, wird der Inhalt problemlos angezeigt. Ich habe also kein Problem mit den Inhalten sondern damit, dass das Gadget auf meinem Fenster nicht gezeichnet wird.

Dein Trick ist gut, wenn man was mit gleichem Namen erneut nachladen möchte und der Cache des Browsers glaubt er habe das doch schon. Das ist aber nicht mein Problem hier.

Ich hab schon gedacht, dass das Laden des IE in das Gadget vielleicht Probleme macht?

Kukulkan

Re: WebGadget refresht nicht immer

Verfasst: 13.09.2011 11:18
von Kiffi
noch ein Versuch: WaitWindowEvent() mit einem Timeout versehen?

Grüße ... Kiffi

Re: WebGadget refresht nicht immer

Verfasst: 13.09.2011 11:43
von Kukulkan
Hallo,
noch ein Versuch: WaitWindowEvent() mit einem Timeout versehen?
Das bringt leider nichts. Ich hab 10 und 100 eingegeben. Ohne Erfolg. Ich hab ein virtuelles Windows 7, auf dem das Problem manchmal auftritt. Hier ist es aber gleich wieder passiert :(

Ich hab auch schon in einem Thread nach Ablauf von 1 Sekunde nochmal versucht einen Refresh mit InvalidateRect_(WindowID(#webDisplayMessage),0,1) und UpdateWindow_(WindowID(#webDisplayMessage)) zu machen. Das brachte aber nichts (evtl, weil ich aus dem Thread das gar nicht kann?).

Ach ja, im Thread ein

Code: Alles auswählen

SetGadgetState(#webDisplayMessage, #PB_Web_Refresh) ; refresh the content in webbrowser
aufzurufen ist auch keine gute Idee. Schmiert ab (aus dem Thread geht das wohl nicht).

Grüße,

Kukulkan

Re: WebGadget refresht nicht immer

Verfasst: 13.09.2011 11:49
von Kiffi
auch wenn es mit dem eigentlichen Problem nichts zu tun hat:
Wieso hast Du noch ein zusätzliches Delay(10) in Deiner Event-Schleife?

Grüße ... Kiffi

Re: WebGadget refresht nicht immer

Verfasst: 13.09.2011 11:56
von The Shark
Na wenns nach nem Resizegadget immer funktioniert, machst halt nach jedem Refresh

Code: Alles auswählen

resizegadget(#webDisplayMessage,breite,höhe-1)
resizegadget(#webDisplayMessage,breite,höhe)
vielleicht gehts auch mit nem einzelnen resizegadget.
Die Lösung ist zwar alles andere als elegant, aber wenns dann funktioniert ...