Statusbar Text ändern ?

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
X360 Andy
Beiträge: 1206
Registriert: 11.05.2008 00:22
Wohnort: Bodensee
Kontaktdaten:

Statusbar Text ändern ?

Beitrag 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 :( )
Benutzeravatar
scholly
Beiträge: 793
Registriert: 04.11.2005 21:30
Wohnort: Düsseldorf

Re: Statusbar Text ändern ?

Beitrag 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
Zuletzt geändert von scholly am 09.12.2008 23:42, insgesamt 1-mal geändert.
Ich bin blutiger PB-Anfänger.
seit 17.12.08: PB 4.3 unter XP Home(SP3)
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Statusbar Text ändern ?

Beitrag 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
a²+b²=mc²
Benutzeravatar
X360 Andy
Beiträge: 1206
Registriert: 11.05.2008 00:22
Wohnort: Bodensee
Kontaktdaten:

Beitrag 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 
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag 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
a²+b²=mc²
Benutzeravatar
X360 Andy
Beiträge: 1206
Registriert: 11.05.2008 00:22
Wohnort: Bodensee
Kontaktdaten:

Beitrag 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:
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
X360 Andy
Beiträge: 1206
Registriert: 11.05.2008 00:22
Wohnort: Bodensee
Kontaktdaten:

Beitrag 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
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
X360 Andy
Beiträge: 1206
Registriert: 11.05.2008 00:22
Wohnort: Bodensee
Kontaktdaten:

Beitrag 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!
Antworten