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 :allright: (<-- 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) :lol:

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!