Hallo zusammen,
gibt es eine Möglichkeit die Textfarbe in einer Statusbar zu ändern?
Gruss
Peter
Statusbar Textfarbe ändern?
Statusbar Textfarbe ändern?
Alle sagten "das geht nicht!" .... und dann kam einer der nichts davon wusste und machte es einfach.
Suchen im englischen Forum ist meine erste Idee, wenn ich hier nix finde. Guckst Du in diesen Thread oder hier.
Im CodeArchiv ist auch ein Beispielcode:
Vielleicht kannst Du da ja was abwandeln.
PureCOLOR scheint nur für Gadgets zu sein.
hdh... scholly
Im CodeArchiv ist auch ein Beispielcode:
Code: Alles auswählen
; German forum: http://www.purebasic.fr/german/archive/viewtopic.php?t=3001&highlight=
; Author: isidoro (updated for PB4.00 by blbltheworm)
; Date: 11. December 2003
; OS: Windows
; Demo: No
#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, "Test Window", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget)
statuswnd= CreateStatusBar(0,WindowID(#MainWin))
If statuswnd
AddStatusBarField(500)
EndIf
If hwnd
; OleTranslateColor_(color,0,@color); Falls Farbwerte umgewandelt werden müssen
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
PureCOLOR scheint nur für Gadgets zu sein.
hdh... scholly
Ich bin blutiger PB-Anfänger.
seit 17.12.08: PB 4.3 unter XP Home(SP3)
seit 17.12.08: PB 4.3 unter XP Home(SP3)
- Fluid Byte
- Beiträge: 3110
- Registriert: 27.09.2006 22:06
- Wohnort: Berlin, Mitte
So gehts, XP kompatibel:
[edit]
Du kannst die Hintergundfarbe transparent machen wenn du "\clrBack" auf -1 setzt.
[/edit]
Code: Alles auswählen
Structure ODSBTEXT
szText.l
clrFront.l
clrBack.l
EndStructure
Procedure WindowCallback(hWnd.l,uMsg.l,wParam.l,lParam.l)
Select uMsg
Case #WM_DRAWITEM
Protected *lpdis.DRAWITEMSTRUCT = lParam
If *lpdis\hWndItem = StatusBarID(0)
Protected *osbt.ODSBTEXT = *lpdis\itemData
SetTextColor_(*lpdis\hDC,*osbt\clrFront)
If *osbt\clrBack = -1
SetBkMode_(*lpdis\hDC,1)
Else
SetBkColor_(*lpdis\hDC,*osbt\clrBack)
EndIf
SendMessage_(*lpdis\hwndItem,#SB_GETBORDERS,0,aBorders.RECT)
InflateRect_(*lpdis\rcItem,-aBorders\right / 2,0)
DrawText_(*lpdis\hDC,*osbt\szText,-1,*lpdis\rcItem,#DT_SINGLELINE | #DT_VCENTER)
EndIf
EndSelect
ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure
OpenWindow(0,0,0,350,100,"Custom Statusbar Text Colors",#WS_OVERLAPPEDWINDOW | 1)
SetWindowCallback(@WindowCallback())
CreateStatusBar(0,WindowID(0))
AddStatusBarField(100) : AddStatusBarField(100) : AddStatusBarField(100)
osbt1.ODSBTEXT
osbt1\szText = @"Statusbar Field #1"
osbt1\clrFront = #Green
osbt1\clrBack = #Black
SendMessage_(StatusBarID(0),#SB_SETTEXT,0 | #SBT_OWNERDRAW,osbt1)
osbt2.ODSBTEXT
osbt2\szText = @"Statusbar Field #2"
osbt2\clrFront = #Yellow
osbt2\clrBack = #Red
SendMessage_(StatusBarID(0),#SB_SETTEXT,1 | #SBT_OWNERDRAW,osbt2)
osbt3.ODSBTEXT
osbt3\szText = @"Statusbar Field #3"
osbt3\clrFront = #Cyan
osbt3\clrBack = #Blue
SendMessage_(StatusBarID(0),#SB_SETTEXT,2 | #SBT_OWNERDRAW,osbt3)
While WaitWindowEvent() ! 16 : Wend
Du kannst die Hintergundfarbe transparent machen wenn du "\clrBack" auf -1 setzt.
[/edit]
Windows 10 Pro, 64-Bit / Outtakes | Derek