Seite 1 von 1

Delay im Fenster

Verfasst: 20.12.2010 16:37
von Stephan-X
Hallo !
Ich hab im Forum unter Delay() nix gefunden deshalb nochmal ńe Frage wie man das Lösen könnte ??
Es sollte in einem Fenster eine Schrift von Links nach Rechts laufen, dazwischen immer ne 1/2 sec. Verzögerung.
Das Delay(500) wartet aber immer die Ganze Zeit bis zum Ende sodaß keine zwischenschritte Angezeigt werden !!
Nehme ich die Schleife raus wird der Text wieder ganz normal angezeigt ???? :oops:

Der Code befindet sich direkt nach dem Öffnen des Fensters, also noch nicht in der Repeat / Until Schleife

Code: Alles auswählen

     Home.s  =  GetHomeDirectory()
     Ergebnis.s = Home.s
     x = 130
     For i = 1 To 5
       Delay(500)
       x = x - 10
       TextGadget(#Text_0  ,x,30,250,25,"")
       SetGadgetText(#Text_0,"Medium :    "+Ergebnis.s ) 
     Next
     SetGadgetText(#Text_0,"Medium :    "+Ergebnis.s )
Kann mir da mal jemand nen Schubs :lol: geben !!

Gruss Stephan

Re: Delay im Fenster

Verfasst: 20.12.2010 16:42
von TomS
Du könntest ja mal den ganzen Code posten.
Dann würde man sehen, dass du zwei verschachtelte Schleifen (Repeat:Until und For:Next) hast.
Die Repeat-Schleife wartet natürlich, bis die For-Schleife fertig ist, also muss die For-Schleife raus.
Was du willst, kann man auch mit einer Schleife unh ohne großes Delay machen. z.B. mit einer Counter-Variabe, zu der du immer 1 addierst.
Dann überprüfst du, ob die Variable > 500, führst deinen Code aus der For-Schleife aus und setzt die Variable wieder 0.
Das ist allerdings nicht sehr genau, weswegen du dir mal AddWindowTimer() und Konsorten anschauen solltest.

Re: Delay im Fenster

Verfasst: 20.12.2010 16:43
von STARGÅTE
Jedesmal ein neues gadget zu erstellen ist schon mal falsch!

Dafür gibs ResizeGadget, damit kannst du ein Gadget verschieben (u.a.)

Zum Verzögern kannst du einen WindowTimer nutzen.

Das ganze sieht dann zB so aus:

Code: Alles auswählen

Enumeration
  #Window
  #Gadget
  #Timer
EndEnumeration

OpenWindow(#Window, 0, 0, 400, 300, "Fenster", #PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)
  TextGadget(#Gadget, 130, 10, 200, 20, "Beispieltext")
  AddWindowTimer(#Window, #Timer, 500)

Repeat

  Select WaitWindowEvent()
    Case #PB_Event_CloseWindow
      End
    Case #PB_Event_Timer
      Select EventTimer()
        Case #Timer
          If GadgetX(#Gadget) > 70
            ResizeGadget(#Gadget, GadgetX(#Gadget)-10, #PB_Ignore, #PB_Ignore, #PB_Ignore)
          EndIf
      EndSelect
  EndSelect

ForEver
Solange der Text nicht bei x=70 ist wird er jede 500ms um 10px nach links geschoben.

Re: Delay im Fenster

Verfasst: 20.12.2010 16:52
von ts-soft
STARGÅTE hat geschrieben:Solange der Text nicht bei x=70 ist wird er jede 500ms um 10px nach links geschoben.
Du solltest aber nach erreichen der Zielposition auch den Timer wieder entfernen!

Gruß
Thomas

Re: Delay im Fenster

Verfasst: 20.12.2010 16:59
von Stephan-X
OK Leute ....
uff gud Hessisch, ma konn ald wänn wie a kuh, ma lärnt imma noch dazu :lol:

Das mit dem ResizeGadget is klar, ich kam grad auf die Idee und das erste was mir eingefallen ist war das mit Delay !!
Prima, das mit dem Timer is mir jetzt klar
Danke Euch, jetz kann ich weiter machen.

Stephan