Seite 1 von 1
StatusBar - text auslesen?
Verfasst: 17.06.2007 18:57
von smateja
Sorry für die Frage - aber - seh ich das richtig, dass man wenn man in die Statusbar n Text z. B. in das 1. Feld schreibt - es man nicht mehr auslesen kann? - Zumindest hab ich dafür mal keinen passenden Befehl gefunden?
Kennt wer hier n Trick etc?
Verfasst: 17.06.2007 19:01
von ts-soft
Du siehst es richtig, mit normalen Mitteln läßt sich der Text nicht auslesen.
Welchen Sinn sollte das auch machen?
re:
Verfasst: 17.06.2007 19:08
von smateja
naja - also ich muß n wenig ausholen - evtl. gibts ja ne bessere möglichkeit das zu lösen:
also hab n kleines proggy - welches eben ne statuszeile unten einblendet - und wenn ich da die zeit update und das datum - dann flackert mir das richtig böse - hab auch schon versucht - das nur alle 400 Ticks Updaten zu lassen - aber flackert trotzdem noch - stellt ichs druchaus höher - so sehe ich nur noch alle 2 Sekunden n Zeitupdate.
Meine Idee war dann - ich lese einfach dei statusbar aus - und vergleichen den ist mit dem soll wert - wenn dieser nicht stimmt Update ich die Anzeige.
Evtl. hier jemand ne andere Lösung ? (Außer hier n Delay etc einzubauen ?)
Verfasst: 17.06.2007 19:23
von ts-soft
Wie wäre es mit einer Variable?
Pseudocode:
Code: Alles auswählen
;OldTime = Time
If Time > OldTime + UpdateIntervall
OldTime = Time
StatusBarText(0, 0, Str(OldTime))
EndIf
Verfasst: 17.06.2007 19:29
von D@nte
Denk mal das dürfte dem nah kommen was du suchst...
Code: Alles auswählen
Procedure Display_Time()
StatusBarText(0, 0, FormatDate("%yyyy-%mm-%dd um %hh:%ii:%ss Uhr", Date()), #PB_StatusBar_Center)
EndProcedure
ElapsedMS = ElapsedMilliseconds() ;<- funktioniert auch ohne
If OpenWindow(0, 216, 0, 240, 20, "Timer", #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
If CreateStatusBar(0, WindowID(0))
EndIf
Repeat
Event = WaitWindowEvent(100)
If ElapsedMilliseconds() > ElapsedMS
ElapsedMS + 1000
Display_Time()
EndIf
Until GetAsyncKeyState_(#VK_ESCAPE) Or Event = #PB_Event_CloseWindow
EndIf
@ts-soft
Doch'n Minimalist ;p
Verfasst: 17.06.2007 19:38
von ts-soft
D@nte hat geschrieben:
@ts-soft
Doch'n Minimalist ;p
Mein Code ist länger als der von smateja
Konkretes Beispiel ist also garnicht möglich, bei den vorliegenden Daten
RE:
Verfasst: 17.06.2007 19:56
von smateja
Merci euch Beiden, Denkanstoß hat 1A geholfen und gepaßt.
Re: RE:
Verfasst: 17.06.2007 20:20
von ts-soft
smateja hat geschrieben:Merci euch Beiden, Denkanstoß hat 1A geholfen und gepaßt.
Freut mich.
Mein persönlicher Favorit wäre für Windows folgender:
Code: Alles auswählen
Procedure CB_Timer(hWnd.l, uMsg, IDEvent, dwTime)
Protected Time$ = FormatDate("%ii:%ss", Date())
StatusBarText(0, 2, Time$, #PB_StatusBar_Right | #PB_StatusBar_Raised)
EndProcedure
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)
SetTimer_(WindowID(0), 1, 500, @CB_Timer())
Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow
KillTimer_(WindowID(0), 1)
EndIf
Man spart sich das TimeOut und es ist auch schön übersichtlich. Läßt sich
problemlos um weitere TimerEvents ergänzen.
Gruß
Thomas
Re: StatusBar - text auslesen?
Verfasst: 21.12.2007 18:51
von Kurzer
smateja hat geschrieben:Sorry für die Frage - aber - seh ich das richtig, dass man wenn man in die Statusbar n Text z. B. in das 1. Feld schreibt - es man nicht mehr auslesen kann? - Zumindest hab ich dafür mal keinen passenden Befehl gefunden?
Kennt wer hier n Trick etc?
Mit WinAPI geht es:
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, "Feld 1")
StatusBarText(0, 1, "Feld 2")
StatusBarText(0, 2, "Feld 3")
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
OldText$ = Space(256)
SendMessage_(StatusBarID(0), #SB_GETTEXT, 0, @OldText$) ; Den vorhandenen Text der StatusBar auslesen
Debug OldText$
OldText$ = Space(256)
SendMessage_(StatusBarID(0), #SB_GETTEXT, 1, @OldText$) ; Den vorhandenen Text der StatusBar auslesen
Debug OldText$
OldText$ = Space(256)
SendMessage_(StatusBarID(0), #SB_GETTEXT, 2, @OldText$) ; Den vorhandenen Text der StatusBar auslesen
Debug OldText$
EndIf
0, 1, 2 stehen jeweils für das Feld der StatusBar...