Seite 1 von 2

dategadget() - datum setzen

Verfasst: 14.08.2008 14:59
von coMstructor
hi,
ich möchte beim dategadget ein bestimmtes datum setzen. ich benutze dafür diesen befehl:

Code: Alles auswählen

SetGadgetState(1393,ParseDate("%dd.%mm.%yyyy",Datum$))
Datum$ ist dann zB "20.08.2008". aber nach diesem aufruf verändert sich im dategadget nichts. ich weis nicht warum??

Verfasst: 14.08.2008 15:20
von sibru
Dein Code ist korrekt, jedoch fehlt das Umfeld, spez. Gadget-Aufbau.
Ich hab´mal ´n kleines TestProgi um Deine Zeile erstellt: klappt
wunderbar...

Code: Alles auswählen

#DatGad = 1
WinId = OpenWindow(1, 0, 0, 200, 150, "Test DateGad", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
CreateGadgetList(WinId)
DateGadget(#DatGad, 10, 10, 120, 20)
Datum$ = "20.08.2008"
SetGadgetState(#DatGad, ParseDate("%dd.%mm.%yyyy", Datum$))

Repeat ;/========== die SteuerSchleife ==========
  EventID = WaitWindowEvent()
Until EventID = #PB_Event_CloseWindow

Verfasst: 14.08.2008 15:25
von Little John
sibru hat geschrieben:klappt wunderbar...
Bei mir auch (PB 4.20 unter Windows XP). Es würde mich allerdings nicht wundern wenn es unter Linux nicht läuft, denn da ist DateGadget() buggy. Ist aber mal wieder alles nur Spekulation, da der OP keinen vollständigen Code angegeben hat.

Gruß, Little John

Verfasst: 14.08.2008 15:27
von Bisonte
Also PB4.20 gehts... da ändert sich die anzeige genau so wie du es gewollt hast.

Code: Alles auswählen

  Datum$="20.08.2008"

  If OpenWindow(0, 0, 0, 200, 250, "DateGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
    If CreateGadgetList(WindowID(0))
      DateGadget(0, 10, 10, 180, 25, "Datum: %mm/%dd/%yyyy Zeit: %hh:%ii")
      SetGadgetState(0,ParseDate("%dd.%mm.%yyyy",Datum$))
      Repeat: Until WaitWindowEvent() = #PB_Event_CloseWindow
    EndIf
  EndIf
Drumrum aus der Hilfe genommen....

Verfasst: 14.08.2008 15:38
von coMstructor
ja, das mit der schleife und dem drumrum ist klar, die zeile war nur ein auszug. euer code funzt bei mir ja auch. mein ziel ist es halt nach einem event das datum zu verändern. leider geschieht da wie gesagt einfach garnix nach dem aufruf der benannten zeile.

also nochmal genau:

1. ich lese ein string aus ner preference ( das gewünschte datum )
2. benannte zeile wird aufgerufen um diesen string in das gadget zu setzen
3. es passiert nix , das datum ändert sich nicht und zeigt immer noch das aktuelle datum an

Verfasst: 14.08.2008 15:40
von Kaeru Gaman
das ändern des datums erzeugt wiederum ein event, das verarbeitet werden muss.
also, wenn du SetGadgetState(1393,ParseDate("%dd.%mm.%yyyy",Datum$))
ausgeführt hast, wird die änderung erst nach dem nächsten durchlauf von (Wait)WindowEvent() sichtbar.

btw, warum 1393? hast du so viele gadgets?


> Es würde mich allerdings nicht wundern wenn es unter Linux nicht läuft, denn da ist DateGadget() buggy.

hat coMstructor denn Linux?

Verfasst: 14.08.2008 15:51
von Little John
Kaeru Gaman hat geschrieben:> Es würde mich allerdings nicht wundern wenn es unter Linux nicht läuft, denn da ist DateGadget() buggy.

hat coMstructor denn Linux?
Weiß nicht, das war nur'n Schuss ins Blaue. Bleibt ja kaum was anderes übrig, wenn detaillierte Angaben fehlen.

Gruß, Little John

Verfasst: 14.08.2008 15:53
von coMstructor
hat er nicht.

zum einen: ich bin so bei 7000 und noch was gadgets ...

zum anderen: dann hab ich wohl ein problem. in der haupt repeat schleife die die events abfängt wird eine prozedur aufgerufen, in der dann hat die benannte zeile aufgeführt wird. kann ich nicht irgendwie direkt nach dem setgadgetstate updaten??

Verfasst: 14.08.2008 16:06
von Kaeru Gaman
mit einem eventfresser:

Code: Alles auswählen

While WindowEvent() : Went
direkt nach dem SetGadgetState

aber Vorsicht:
!Dirty Workaround!

das frisst wirklich ALLE Events die seit dem letzten (Wait)WindowEvent angefallen sind.
sollten dort Userevents dabei sein, kannst du nicht mehr drauf reagieren.

meistens sind das aber ja nur wenige millisekunden,
und wenn ein Userevent das Aktualisieren ausgelöst hat,
wird es ihm schwer fallen, in den nächsten zwei millisekunden ein weiteres wichtiges Event auszulösen....

Verfasst: 14.08.2008 16:10
von coMstructor
dein tip ändert leider auch nix. ich bin am verzweifeln :( was kann da nur falsch sein?