[MaxGUI] GUI aktualisieren

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

 

Zwer99

Betreff: [MaxGUI] GUI aktualisieren

BeitragFr, Aug 26, 2011 20:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Grüßgott!

Ich habe erneut eine Frage: Gibt es eine Möglichkeit die MaxGUI per Hand neu zu Rendern?

Ich möchte einen Text vor einem Funktionsaufruf erscheinen lassen und danach wieder verschwinden lassen. Allerdings wird der Text nicht dargestellt, weil die GUI vor dem Aufruf der Funktion nicht aktualisiert wird.
Wisst ihr, was ich meine?

Also, gibt es dazu eine Funktion, die ich dazwischen reinquetschen kann?


Dankeschön Smile
1. Platz: BAC #126 BAC #60 | 2.Platz: BCC #36 | 3. Platz: BCC #18 | Pfurz: BCC #20

Ovion Entertainment

skey-z

BeitragFr, Aug 26, 2011 20:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Schau dir mal RedrawGadget an
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz
BAC#57: 2. Platz
Twitter
 

PhillipK

BeitragFr, Aug 26, 2011 21:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Tut mir leid, ich rate einfach ins blinde.
Dein Text ist mir zu unverständlich (mag aber auch an den Kopfschmerzen oder der mangelnden erfahrung mit MaxGUI liegen *g*)..

Ich hatte mal ein wenig mit max gui rumgespielt und mich tierisch drüber aufgeregt, das alles harkte.
Grund war, das das programm immer auf ein event gewartet hat Smile
Die lösung war meines Wissens ein PollEvent() und ein select baum, welches event kam.
Dazu ein TTimer (CreateTimer(60)) und eine abfrage, ob EVENT_TIMERTICK ausgelöst wurde.

E voila, MaxGUI aktualisiert sich immer brav und gibt dir unter dem EVENT_TIMERTICK auch eine regelmäßige anlaufstelle für updates.
Vllt hilft dir das ja weiter :3 (ps: bei Poll/PolledEvent bin ich mir grade nicht sicher! eine funktion, die ein Event aus dem Qeue holt und NICHT darauf wartet. Falls was drin ist, kriegst du nen schönen Select-Case baum ausgeführt Smile )

Gruß, PhillipK Smile
 

Zwer99

BeitragFr, Aug 26, 2011 22:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für die Antworten, allerdings funktioniert die Möglichkeit von skey-z leider nicht.

Und PhillipK, das wird so nicht funktionieren.

Vielleicht wird es mit einem Besipielcode etwas verständlicher:

Code: [AUSKLAPPEN]
HideGadget(directoriesPanel)       ' Ein Panel ausblenden
ShowGadget(whileSync)       ' Ein anderes Panel einblenden

' Hier dazwischen muss ich irgendwie die GUI updaten, da sync sehr lange dauert

sync(directoriesList, target)      ' Hier werden ein paar Dateien geschaufelt (ich brauche keine ProgressBar)

HideGadget(whileSync)
ShowGadget(directoriesPanel)
1. Platz: BAC #126 BAC #60 | 2.Platz: BCC #36 | 3. Platz: BCC #18 | Pfurz: BCC #20

Ovion Entertainment

skey-z

BeitragFr, Aug 26, 2011 23:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie hast du es den eingebunden?

Also so wie ich den Befehl verstehe, erstellt du einen Timer, greifst mit EVENT_TIMERTICKS die vergangene Zeit ab und mit RedrawGadget window zeichnest du das Fenster neu.

Wobei ich auch sagen muss, dass ich es bisher nur mit einem Canvas eingesetzt habe.
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz
BAC#57: 2. Platz
Twitter

Midimaster

BeitragFr, Aug 26, 2011 23:25
Antworten mit Zitat
Benutzer-Profile anzeigen
@Zwer99
...so falsch liegt hier PhillipK und skey-z nicht!

Wenn es ordentlich gemacht ist, läuft es auch so:

BlitzMax: [AUSKLAPPEN]
SuperStrict   
Import MaxGUI.Drivers
Global Window:TGadget , directoriesPanel:TGadget , WhileSync:TGadget

Local flags%=WINDOW_TITLEBAR | WINDOW_CLIENTCOORDS|WINDOW_CENTER
Window= CreateWindow("Leeres Test Window" , 0 , 0 , 600 , 400 , Null , Flags%)
directoriesPanel=CreateButton("Panel", 10,10,100,50,Window,BUTTON_PUSH)
WhileSync=CreateButton("Sync", 210,10,100,50,Window,BUTTON_PUSH)
HideGadget(whileSync)

CreateTimer 5

While WaitEvent()
'PrintOut EventID()
Select EventID()
Case EVENT_TIMERTICK
Print "TimerTickt"

Case EVENT_GADGETPAINT
Print "Gadget Paint"
Case EVENT_GADGETACTION
Print "Gadget ACtion"
Action
End Select
Wend




Function Action()
HideGadget(directoriesPanel) ' Ein Panel ausblenden
ShowGadget(whileSync) ' Ein anderes Panel einblenden
RedrawGadget WhileSync
'Delay 1
' Hier dazwischen muss ich irgendwie die GUI updaten, da sync sehr lange dauert

sync() ' Hier werden ein paar Dateien geschaufelt (ich brauche keine ProgressBar)

HideGadget(whileSync)
ShowGadget(directoriesPanel)
End Function


Function Sync()
Local Zeit%=MilliSecs()+1000
Repeat
Until Zeit<MilliSecs()

End Function
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group