Seite 1 von 1

Fenster verzögert öffnen lassen

Verfasst: 22.10.2010 10:23
von PB42
Moin,

mich stört, daß beim Öffnen des Programmfensters die Gadgets so kleckerweise nach und nach auf dem Fenster erscheinen. Es gibt doch irgendwie eine Möglichkeit, das Fenster verzögert öffnen zu lassen und ich wußte auch schonmal, wie das geht. Filmriß, ist weg. Kann mir das bitte nochmal jemand erklären? Danke.

Re: Fenster verzögert öffnen lassen

Verfasst: 22.10.2010 10:33
von ts-soft
Fenster versteckt öffnen, Gadgets aufbauen, While WindowEvent(): Wend, Fenster anzeigen.

Re: Fenster verzögert öffnen lassen

Verfasst: 22.10.2010 10:36
von PB42
Vielen Dank, werde ich versuchen, muß erstmal zum Dienst.

Re: Fenster verzögert öffnen lassen

Verfasst: 22.10.2010 15:45
von PB42
Ich habe das mittlerweile ausprobiert, aber zur eigenen Überraschung ändert das nicht die Bohne was. Irgendwie ging das aber, daß die Gadgets nicht alle kleckerweise auf den Bildschirm kommen, wenn man das Programm startet, sondern schön alle zugleich. Wenn ich das bloß abgespeichert hätte! Weitere Vorschläge erwünscht, Danke.

Re: Fenster verzögert öffnen lassen

Verfasst: 22.10.2010 16:06
von Kiffi
@PB42: Die Vorgehensweise, die Thomas Dir vorgeschlagen hat,
ist genau der richtige Weg. Wenn es bei korrekter Anwendung
der von ihm genannten Schritte bei Dir nicht funktioniert, solltest
Du sicherheitshalber mal Deinen Code posten. Kann ja sein, dass
Du Threads oder Timer verwendest.

Code: Alles auswählen

OpenWindow(DeinFenster, ..., ... #PB_Window_Invisible)

[...]

While WindowEvent()
Wend

HideWindow(DeinFenster, #False)

[WaitWindowEvent-Schleife]
Grüße ... Kiffi

Re: Fenster verzögert öffnen lassen

Verfasst: 22.10.2010 16:24
von PureLust
Kiffi hat geschrieben:@PB42: Die Vorgehensweise, die Thomas Dir vorgeschlagen hat,
ist genau der richtige Weg.
Jo, hatte ich auch anfänglich gedacht, bis ich es ausprobiert habe. :roll:
Das "Erstellen" der Gadgets wird dadurch zwar unsichtbar, nicht jedoch der Refresh (der bei einem sichtbar machen des Fensters ja eingeleitet wird).
Ich habe das hier mal schnell mit einem kleinen Testcode überprüft, bei dem 50 ListIconGadgets() in einem Fenster erstellt werden.
Auf meinem PC dauert dieser Refresh nur weniger Millisekunden, bei 500 ListIconGadgets() dann aber schon in etwa 300 Millisekunden, was man wiederum deutlich sehen kann.

Nun nehme ich mal an, dass der PC von PB42 nicht sonderlich schnell ist, und somit der reine Refresh der Gadgets (nach dem sichtbar machen des Fensters) schon recht lange bei ihm dauert.
Den kann man durch einfaches Verstecken des Fensters natürlich nicht verhindern.

Anbei mal der kleine Testcode:

Code: Alles auswählen

; OpenWindow(0,-8000,0,800,600,"Tons of Gadgets", #PB_Window_SystemMenu)
OpenWindow(0,0,0,800,600,"Tons of Gadgets", #PB_Window_SystemMenu | #PB_Window_Invisible | #PB_Window_ScreenCentered)

For n = 1 To 500
	ListIconGadget(#PB_Any, Random(600), Random(450), 200, 150, "ListIconGadget-"+Str(n),200)
Next n
; SmartWindowRefresh(0,#True) 

timer = ElapsedMilliseconds()
While ElapsedMilliseconds() < timer + 500
	While WindowEvent() : Wend
	Delay(1)
Wend

; ResizeWindow(0,200,#PB_Ignore,#PB_Ignore,#PB_Ignore)
HideWindow(0, #False)

AddWindowTimer(0,0,2000)

Repeat
	Event = WaitWindowEvent()
	If Event = #PB_Event_Timer
		HideWindow(0, #True)
		HideWindow(0, #False)
	endif
	;Debug Event
Until Event = #PB_Event_CloseWindow
Greetz, PL

Re: Fenster verzögert öffnen lassen

Verfasst: 22.10.2010 18:00
von bobobo
der code ist mist .. (mit verlaub) :mrgreen: . .sowas macht doch niemand in ernsthaften Anwendungen und PB42 sicher auch nicht.

überlappende Gadgets sollten mit VB nicht unter Version 6 bestraft werden.

da reicht es schon ein Windowsrefresh (überdeckendes Fenster wegziehen) und die Orgie geht los.

ich sag mal : CODE HER

Re: Fenster verzögert öffnen lassen

Verfasst: 23.10.2010 11:10
von PB42
Vielen Dank nochmal. Den Code kann ich jetzt hier nicht einstellen, weil der einfach zu lang ist. Dann brauchen die Gadgets halt eine Weile, bis die alle auf dem Fenster da sind.