Seite 1 von 2
Statusbar Text ändern ?
Verfasst: 09.12.2008 23:33
von X360 Andy
Moin
Wie immer sorry für meine Tobic Titel
Mit SetGadgetText() kann ich ja von einem Gadget den Text verändern.
Aber wie kann ich jetzt in einer Statusbar den Text ändern ?
Code: Alles auswählen
StatusBarText(#StatusBar_0, 0, "Bsp1")
StatusBarText(#StatusBar_0, 1, "Bsp2:)
StatusBarText(#StatusBar_0, 2, "Bsp3)
Wenn ich jetzt den Text von BSP2 ändern will wie muss ich das machen ?
Ich steh irgendwie grad auf dem Schlauch.
Mfg ich
P.s ( Das hängt mit dem Timer Problem zusammen

)
Re: Statusbar Text ändern ?
Verfasst: 09.12.2008 23:40
von scholly
Schubs...
PB-Hilfe hat geschrieben:StatusBarText(#StatusBar, Field, Text$ [, Appearance])
Description
Change the text of the specified 'Field' in the given '#StatusBar'.
Indem Du den Befehl einfach nochmal aufrufst?
Code: Alles auswählen
If OpenWindow(0, 100, 150, 300, 100, "PureBasic - StatusBar Example", #PB_Window_SystemMenu | #PB_Window_SizeGadget)
If CreateStatusBar(0, WindowID(0))
AddStatusBarField(100)
AddStatusBarField(50)
AddStatusBarField(100)
EndIf
StatusBarText(0, 0, "Area 1")
StatusBarText(0, 1, "Area 2", #PB_StatusBar_BorderLess)
StatusBarText(0, 2, "Area 3", #PB_StatusBar_Right | #PB_StatusBar_Raised)
Delay (5000)
StatusBarText(0, 0, "Area 52")
Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
Re: Statusbar Text ändern ?
Verfasst: 09.12.2008 23:41
von Kiffi
@X360 Andy: Du weißt ja bereits, wie Du den Text ändern kannst. Nämlich
mit StatusBarText() (hast Du ja auch selber gepostet). Gut, dass ich noch
Dein P.S. gesehen habe, denn sonst hätte ich mit Deiner Frage nichts
anfangen können. Also: Du hast kein Problem mit der Statusbar, sondern
mit Deinem Timer. Insofern kann der "Tobic Titel" (sic!) nicht falscher sein
Zu Deinem Timer-Problem können wir ohne Code nur Vermutungen
anstellen. Und vermutlich wird Dein Code auch zu groß sein, um ihn hier zu
posten. Zwickmühle!
Grüße ... Kiffi
Verfasst: 09.12.2008 23:56
von X360 Andy
@Kiffi
Problem hat sich gerade in 5+ Zeilen aufgelöst

(<-- Danke an scholly )
Code: Alles auswählen
For i = 4 To 20 ; Sekunden
If count = i
StatusBarText(#Statusbar_0, 1,Str(i))
EndIf
Next i
Verfasst: 10.12.2008 00:13
von Kiffi
X360 Andy hat geschrieben:Problem hat sich gerade in 5+ Zeilen aufgelöst
ich weiß zwar nicht, was Du da machst, aber wenn's funktioniert...
Grüße ... Kiffi
Verfasst: 10.12.2008 00:42
von X360 Andy
Kiffi hat geschrieben:X360 Andy hat geschrieben:Problem hat sich gerade in 5+ Zeilen aufgelöst
ich weiß zwar nicht, was Du da machst, aber wenn's funktioniert...
Grüße ... Kiffi
Genauso denke ich auch (noch)

Verfasst: 10.12.2008 00:45
von Kaeru Gaman
also, wenn ich das snippet so sehe, sag ich einfach mal ins blaue, dass die For schleife dort fehl am platz ist.
du musst dein i, das du übrigens anders, beschreibender, nennen solltest,
genauso mit Ifs erhöhen, wie du das mit count und den anderen zählern machst.
For ist nur für geschlossene schleifen geeignet, und sollte nicht mit fortlaufenden eventschleifen vermischt werden.
also, wenn es zur zeit zufällig funktioniert, solltest du es trotzdem verändern,
weil der zeitpunkt wann es dir probleme bereitet absehbar ist.
Verfasst: 10.12.2008 00:49
von X360 Andy
Also sollte For nicht in Repeat:Until Schleifen ?
Für mich würde es zwar am logischten sein wenn sie in die Repeat : Until Schleife kommt.
Aber naja
Verfasst: 10.12.2008 00:56
von Kaeru Gaman
also, die geschlossene For-Schleife bewirkt unter umständen garnichts,
weil SetGadgetText ein Event erzeugt, und das ergebnis erst sichtbar wird,
wenn das event verarbeitet wird.
du hast da "Sekunden" als kommentar drinstehen, aber das sind niemals irgendwelche sekunden,
weil die schleife in sekundenbruchteilen durchläuft.
im endeffekt macht dein codesnippet nichts anderes als:
Code: Alles auswählen
If count >= 4 And count <= 20
StatusBarText(#Statusbar_0, 1,Str(count))
EndIf
und das war bestimmt nicht dein ziel, als du eine schleife kommentiert mit "Sekunden" eingebaut hast...
Verfasst: 10.12.2008 01:09
von X360 Andy
DAS passiert alles in der Repeat Schleife...
Code: Alles auswählen
If ElapsedMilliseconds() > timer2 And counting = 1
timer2 + 1000
If count > 1
count -1
If count = 3
StatusBarText(#Statusbar_0, 1,"Timer: 3")
MessageBeep_(#MB_ICONINFORMATION)
EndIf
If count = 2
StatusBarText(#Statusbar_0, 1,"Timer: 2")
MessageBeep_(#MB_ICONINFORMATION)
EndIf
If count = 1
StatusBarText(#Statusbar_0, 1,"Timer: 1")
MessageBeep_(#MB_ICONINFORMATION)
EndIf
For i = 4 To 20 ; Sekunden
If count = i
StatusBarText(#Statusbar_0, 1,"Timer: "+Str(i))
EndIf
Next i
Else
CatchSound(#count0,?count0)
PlaySound(#count0)
.... etc.....(unwichtig)
Er macht "das" ja nur wenn count ( der Sekunden Wert ) = X ist.
Und ich hab die PC "Uhr" nebenher laufen gehabt und es stimmt exact!