Farbe für StatusBar
Farbe für StatusBar
Hallo,
brauche Hilfe bei der Statusbar Erstellung:
CreateStatusBar(#status, WindowID())
AddStatusBarField(110)
AddStatusBarField(110)
..... usw.
StatusBarText(#status, 0, "Feld 0")
StatusBarText(#status, 0, "Feld 1")
..... usw.
soweit ist ja alles ok.
Aber wie kann man die Vordergrund- und Hintergrundfarbe
der einzelnen Felder ändern ?
Habe nur was gefunden mit dem die komplette Statuszeile
einen anderen Hintergrund bekommt und nicht die einzelnen
Felder. Hoffe es kann jemand helfen.
Thatsanee
brauche Hilfe bei der Statusbar Erstellung:
CreateStatusBar(#status, WindowID())
AddStatusBarField(110)
AddStatusBarField(110)
..... usw.
StatusBarText(#status, 0, "Feld 0")
StatusBarText(#status, 0, "Feld 1")
..... usw.
soweit ist ja alles ok.
Aber wie kann man die Vordergrund- und Hintergrundfarbe
der einzelnen Felder ändern ?
Habe nur was gefunden mit dem die komplette Statuszeile
einen anderen Hintergrund bekommt und nicht die einzelnen
Felder. Hoffe es kann jemand helfen.
Thatsanee
- Hroudtwolf
- Beiträge: 1416
- Registriert: 30.10.2004 23:33
- Kontaktdaten:
Hroudtwolf hat geschrieben:Zeig doch mal den API-Code mit dem du die Statusbar färbst.
Vieleicht ist dort die Lösung schon fast drin.
Hier das habe ich bisher gefunden.
#SB_SETBKCOLOR = $2001
color=RGB($FF,$FF,$AA)
#MainWin=0
MainWinX=100
MainWinY=150
MainWinW=400
MainWinH=200
hwnd=OpenWindow(#MainWin, MainWinX, MainWinY, MainWinW, MainWinH, #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget, "Test Window")
statuswnd= CreateStatusBar(0,WindowID())
If statuswnd
AddStatusBarField(250)
AddStatusBarField(250)
EndIf
If hwnd
SendMessage_(statuswnd,#SB_SETBKCOLOR ,0,color)
StatusBarText(0,0,"Das ist die tolle bunte Leiste ",#PB_StatusBar_Center )
Repeat
EventID.l = WindowEvent()
If EventID
Select EventID
Case #PB_Event_CloseWindow
Quit=1
EndSelect
Else
Delay(10)
EndIf
Until Quit
EndIf
End
- Hroudtwolf
- Beiträge: 1416
- Registriert: 30.10.2004 23:33
- Kontaktdaten:
Hab das hier in Freds Forum gefunden. Vieleicht kommst du damit experimentierend zu einem Erfolg!?
Code: Alles auswählen
; By Nico
; Pure Basic, Version:3.92
; le 26/12/04
;/ Structure allowing the posting of the text in the Status bar
;/ containing the different information which we are going to administer.
Structure Status_Draw
Texte.s
couleur.l
Font.l
Emplacement.l
EndStructure
Enumeration
#Window_0
EndEnumeration
Enumeration
#button
#StatusBar
EndEnumeration
Global Hstatus
;/ Constants used to show the text
#DT_SINGLELINE ; The text will be shown in a single line
#DT_TOP ; The text will be aligned upward,
; The constant #DT_SINGLELINE Must be specified to use it
#DT_BOTTOM ; The text will be aligned downward
; The constant #DT_SINGLELINE Must be specified to use it
#DT_VCENTER ; The text will be centred vertically
; The constant #DT_SINGLELINE Must be specified to use it
#DT_CENTER ; The text will be centred Horizontally
#DT_RIGHT ; The text will be aligned to the Right
#DT_LEFT ; The text will be aligned to the Left
;/ Constants used to show the icon
#SB_SETICON=(#WM_USER) +15
Procedure WindowCallback(WindowID, Message, wParam, lParam)
result = #PB_ProcessPureBasicEvents
Select Message
Case #WM_DRAWITEM
If wParam = GetDlgCtrlID_(Hstatus)
*DrawItem.DRAWITEMSTRUCT = lParam
*pointeur.Status_Draw=*DrawItem\itemData
hFontOld = SelectObject_(*DrawItem\hDC,*pointeur\Font)
SetBkMode_(*DrawItem\hDC, #TRANSPARENT)
SetTextColor_(*DrawItem\hDC, *pointeur\couleur )
DrawText_(*DrawItem\hDC, *pointeur\Texte, -1, *DrawItem\rcItem , *pointeur\Emplacement)
ProcedureReturn #True
EndIf
EndSelect
ProcedureReturn result
EndProcedure
If OpenWindow(0, 100, 150, 300, 100, #PB_Window_SystemMenu | #PB_Window_SizeGadget, "De la couleur dans la Status Bar")
SetWindowCallback(@WindowCallback())
If CreateGadgetList(WindowID(0))
ButtonGadget(#button,10,10,280,20,"Changer le nom et la couleur du champ N°0 par Louis")
EndIf
Hstatus= CreateStatusBar(#StatusBar, WindowID())
;/ To adjust the height of Status Bar
SendMessage_(Hstatus, #SB_SETMINHEIGHT, 40, 0)
;/ Necessities for the immediate rafraichissement of the new size
SendMessage_(Hstatus, #wm_size, 0,0)
;/ Creation of three Fields, 0 , 1, and 2
If Hstatus
AddStatusBarField(100)
AddStatusBarField(50)
AddStatusBarField(100)
EndIf
;/ One fills structure for the field N°0 of Status Bar
Champ_0.Status_Draw
Champ_0\Texte="Pierre"
Champ_0\couleur=RGB(255,0,0)
Champ_0\Font=hFont=LoadFont (0, "Courier", 20)
Champ_0\Emplacement=#DT_CENTER| #DT_VCENTER| #DT_SINGLELINE
;/ One fills structure for the field N°1 of Status Bar
Champ_1.Status_Draw
Champ_1\Texte="Paul"
Champ_1\couleur=RGB(0,168,168)
Champ_1\Font=hFont=LoadFont (1, "Courier", 8)
Champ_1\Emplacement=#DT_LEFT| #DT_BOTTOM| #DT_SINGLELINE
;/ One fills structure for the field N°2 of Status Bar
Champ_2.Status_Draw
Champ_2\Texte="Nico"
Champ_2\couleur=RGB(0,0,255)
Champ_2\Font=hFont=LoadFont (2, "Arial", 16)
Champ_2\Emplacement=#DT_TOP|#DT_RIGHT| #DT_SINGLELINE
;/ Pointer towards the Structure to be shown
*pointeur_champ0.Status_Draw=@Champ_0
*pointeur_champ1.Status_Draw=@Champ_1
*pointeur_champ2.Status_Draw=@Champ_2
;/ One sends the different pointer to Status Bar
SendMessage_(Hstatus, #SB_SETTEXT, 0 | #SBT_OWNERDRAW ,*pointeur_champ0)
SendMessage_(Hstatus, #SB_SETTEXT, 1 | #SBT_OWNERDRAW ,*pointeur_champ1)
SendMessage_(Hstatus, #SB_SETTEXT, 2 | #SBT_OWNERDRAW ,*pointeur_champ2)
;/ Add an icon in the field N°2
Hicon=LoadImage(0, "data\CdPlayer.ico")
SendMessage_( Hstatus, #SB_SETICON, 2, Hicon)
Repeat
Event = WaitWindowEvent()
Select Event
Case #PB_EventGadget
Select EventGadgetID()
Case #button
;/ Change of the Field N°0
Champ_0.Status_Draw
Champ_0\Texte="Louis"
Champ_0\couleur=RGB(255,255,0)
SendMessage_(Hstatus, #SB_SETTEXT, 0 | #SBT_OWNERDRAW ,*pointeur_champ0)
EndSelect
Case #WM_CLOSE
CloseFont(0)
CloseFont(1)
CloseFont(2)
Quit+1
EndSelect
Until Quit=1
EndIf
End
- Hroudtwolf
- Beiträge: 1416
- Registriert: 30.10.2004 23:33
- Kontaktdaten:
Re: Farbe für StatusBar
Plaziere an Stelle der Statusbarfelder entsprechende ImageGadgetsThatsanee hat geschrieben:Aber wie kann man die Vordergrund- und Hintergrundfarbe
der einzelnen Felder ändern ?
Habe nur was gefunden mit dem die komplette Statuszeile
einen anderen Hintergrund bekommt und nicht die einzelnen
Felder. Hoffe es kann jemand helfen.
und zeichne was Du willst in die Bilder. Farbe. Text. Anderes.
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
Re: Farbe für StatusBar
Hi, habe es sonst immer mit TextGadget gemacht. Klappt klasseDanilo hat geschrieben:Plaziere an Stelle der Statusbarfelder entsprechende ImageGadgets
und zeichne was Du willst in die Bilder. Farbe. Text. Anderes.
damit. Nur im Gegensatz zu Status muß ich diese auch jedesmal neu
positionieren wenn ich die Fenstergröße änder. Also wollte ich es
mal mit StatusBar machen, aber scheint wohl nicht so zu klappen
wie ich es mir erhofft hatte, zumindest was die Farbe angeht.
Text und Grafik in einen Feld geht dagegen in StatusBar einfacher.
Und das war auch der Hauptgrund warum ich StatusBar gewählt habe,
da ich sonst etliches an Grafiken benötigen würde.
Na vielleicht kommt es ja noch in einen der nächsten Updates.
So wie ja auch gerade erst für ToolBar 2 neue Funktionen
hinzugekommen sind.
- Hroudtwolf
- Beiträge: 1416
- Registriert: 30.10.2004 23:33
- Kontaktdaten:
Ich glaube das kannst du vergessen. Mir deucht ,daß die Sache mit der Statusbar Systemintern so geregelt ist.Na vielleicht kommt es ja noch in einen der nächsten Updates.
So wie ja auch gerade erst für ToolBar 2 neue Funktionen
hinzugekommen sind.
Ich beschäftige mich jetzt seit ein paar Stunden mit deinem Problemm und hab nicht mal den Ansatz einer Hoffnung gefunden. Hab sämtliche API-Referenzen die ich auf der Platte und in Buchform habe durchgewälzt und nix gefunden.
-
- Beiträge: 250
- Registriert: 25.11.2004 19:51
- Computerausstattung: Alienware Aurora / Intel Core i7 CPU @ 2.8 GHz / 64 Bit OS
Re: Farbe für StatusBar
Sorry dass ich den Vor-KriegsPost ausgrabe - aber hat hier evtl. jemand schon eine Lösung?
Bräuchte aktuell auch das einfärben bzw. das Ändern der Textfarbe in der Statusbar und mit dem Beispiel komm ich mal rein garnicht zurrecht es zu minimieren.
Thx und LG
Bräuchte aktuell auch das einfärben bzw. das Ändern der Textfarbe in der Statusbar und mit dem Beispiel komm ich mal rein garnicht zurrecht es zu minimieren.
Thx und LG
PB 4.6 / 32 Bit / 64 Bit