Hallo,
ich wollte mir eine kleine einfache Uhr schreiben, was alles recht gut funktioniert, bis auf den Haken, dass ich nicht so recht weiß wie ich die zeit in einem geöffneten Fenster aktualisieren soll.
Ich nehmen die Api: GetLocalTime_()
und schreibe sie als TextGadget in das Fenster.
Aktualisieren ist nicht wirklich das Problem, sondern das geblinke das das Fenster macht und dadurch den "Schließen" - Knopf überhaupt nicht mehr anzeigt.
Wer weiß Rat?
Danke im voraus,
kocad
Window aktualisieren
Hallo.
Dein Problem wird mit der Beschreibung nicht so richtig klar. Ich vermute mal, mit "geblinke" meinst Du, die permanente Aktualisierung des Gadgets.
Warum aktualisierst du permanent das Gadget und nicht erst, wenn sich die Zeit geändert hat? Das entlastet den Rechner.
Nach Aktualisierung deines Fensters bzw der Gadgets solltest du noch ein
Repeat : Until Windowevent()=0
einbauen....Nur so als tipp...
Falls das nicht die Lösung ist, poste dochmal den Code, es klingt, als ist er nicht lange...
Dein Problem wird mit der Beschreibung nicht so richtig klar. Ich vermute mal, mit "geblinke" meinst Du, die permanente Aktualisierung des Gadgets.
Warum aktualisierst du permanent das Gadget und nicht erst, wenn sich die Zeit geändert hat? Das entlastet den Rechner.
Nach Aktualisierung deines Fensters bzw der Gadgets solltest du noch ein
Repeat : Until Windowevent()=0
einbauen....Nur so als tipp...
Falls das nicht die Lösung ist, poste dochmal den Code, es klingt, als ist er nicht lange...
Agent_Sasori
It's not a bug - it's a feature!
http://www.StephenKalisch.de | http://www.ria-tec.com | http://www.dirsync.de
It's not a bug - it's a feature!
http://www.StephenKalisch.de | http://www.ria-tec.com | http://www.dirsync.de
Das Geblinke kommt daher, dass er das Fenster zu oft aktualisiert. Du müsstest eine "Bremse" einbauen.
Eine Variante wäre, Delay() zu verwenden. zB so:
Eine zweite Möglichkeit ist, nur dann das Fenster zu aktualisieren, wenn sich die Zeit geändert hat.
Das kannst du natürlich anpassen, wie du es brauchst.
Greetz Laurin
Eine Variante wäre, Delay() zu verwenden. zB so:
Code: Alles auswählen
Repeat
' <- Zeit ins Textgadget schreiben
Delay(100)
Event = WindowEvent()
Until Event = #PB_Event_CloseWindow
Code: Alles auswählen
Repeat
GadgetZeit.s = GetGadgetText(#TextGadget) ' hier die TextGadget-Nummer eintragen
APIZeit.s = GetLocalTime_() ' ??? Ich weiß nicht, wie dieser API-Befehl funzt
If GadgetZeit <> APIZeit
SetGadgetText(#TextGadget, APIZeit)
Endif
Delay(100)
Event = WindowEvent()
Until Event = #PB_Event_CloseWindow
Greetz Laurin
Now these points of data make a beautiful line.
And we're out of beta. We're releasing on time.
And we're out of beta. We're releasing on time.
Hier mal meine "Micro-Uhr" die genau das macht, was du benennst (ohne API - unnütz)
Code: Alles auswählen
;
; Micro-Uhr
;
#SW_Name="MicroUhr"
#win_main=1
main_win=OpenWindow(#win_main,0,0,150,30,#PB_Window_MinimizeGadget|#PB_Window_ScreenCentered|#PB_Window_SystemMenu,#SW_Name)
If main_win
If CreateGadgetList(main_win)
TextGadget(1,5,5,50,20,"Uhrzeit")
StringGadget(2,55,5,90,20,FormatDate("%hh:%ii:%ss",Date()),#PB_Text_Right)
EndIf
Else
MessageRequester("FEHLER","Kein Fenster!",#mb_iconerror)
End
EndIf
timer=ElapsedMilliseconds()
Repeat
If (ElapsedMilliseconds()-timer)>1000 ; Also 1 Sekunde
aktuellezeit$=FormatDate("%hh:%ii:%ss",Date())
SetGadgetText(2,aktuellezeit$)
timer=ElapsedMilliseconds()
Repeat : Until WindowEvent()=0
EndIf
Delay(1) ; Kurz warten für CPU, sonst 100% Auslastung
Until WindowEvent()=#PB_Event_CloseWindow
End
Agent_Sasori
It's not a bug - it's a feature!
http://www.StephenKalisch.de | http://www.ria-tec.com | http://www.dirsync.de
It's not a bug - it's a feature!
http://www.StephenKalisch.de | http://www.ria-tec.com | http://www.dirsync.de