Seite 1 von 1

Blinkender Text/Hintergrund in Stringgadget

Verfasst: 01.11.2006 23:43
von Bayernhans
Habe gerade versucht einen blinkenden Text oder Hintergrund in Stringgadgets zu erzeugen, aber hab' leider irgendwie noch "HALLOWEEN" -Nachwehen ...

Idee: Mittels einer (Endlos-) Schleife und Delay

Code: Alles auswählen

For p=1 To max_Gadgets
...
      Repeat
          SetGadgetText(p+100, "OK") ; oder SetGadgetColor(p+100, #PB_Gadget_BackColor, #blue)
          Delay(80)
          SetGadgetText(p+100, "  ") ; oder SetGadgetColor(p+100, #PB_Gadget_BackColor, #red)
          Delay(80)                  
      Until Event = #PB_Event_CloseWindow Or  ????

;  weitere Gadgets werden geändert ...

Next
"Aussprung" aus Schleife klappt nicht wie gewünscht. Wie kann ich angeben dass z. B. Anwender auf Button klickt (????)
Es werden im Code noch weitere Stringgadgets "manipuliert", deswegen vermutlich kein WaitWindowEvent möglich - Schleife beendet sich da zu früh bzw. läuft nur eine Runde
(PB 3.94/4)

Wer weis Rat ? oder hat andere Idee ?
DANKE

Verfasst: 01.11.2006 23:52
von ts-soft
Du solltest einen Timer statt einer endlosschleife verwenden.
Entweder API-Timer SetTimer_ oder PBOSL_Userlibs installieren oder hier
gucken: http://www.purebasic.fr/german/viewtopic.php?t=9938

Verfasst: 02.11.2006 00:15
von Bayernhans
Dort war ich schon vorher - danke ts-soft, aber leider paßt das mit den Timern nicht so ganz - soweit ich es überhaupt verstehe ...

Verfasst: 02.11.2006 00:18
von ts-soft
Ohne Timer wirste kaum die normalen Windowsereignisse abarbeiten
können. Das Programm wird nie rund laufen :D

Verfasst: 02.11.2006 00:29
von Kiffi
> soweit ich es überhaupt verstehe ...

ist ganz einfach:

Code: Alles auswählen

Procedure FlashButtonText()
  If GetGadgetText(0)="OK"
    SetGadgetText(0, "")
  Else
    SetGadgetText(0, "OK")
  EndIf
EndProcedure

OpenWindow  (0, #PB_Ignore, #PB_Ignore, 300, 300, "Blinkender Text")
CreateGadgetList(WindowID(0))
ButtonGadget(0, 5, 5, 290, 290, "OK")
 
StartTimer(0, 1000, @FlashButtonText())
 
Repeat
Until WaitWindowEvent()=#PB_Event_CloseWindow

EndTimer(0)
auf jeden Fall einfacher als die Schleife nebst Delay (was zwangsläufig
irgendwann mal zu Problemen führt)

Grüße ... Kiffi