Farbe der Panel Lasche verändern ???
Farbe der Panel Lasche verändern ???
Ich habe ein Panel Gadget mit mehreren Laschen. Unter jeder Lasche kann ich Daten bearbeiten. Dazu springe ich in einen Bearbeitungsmodus und dabei wird das Bearbeiten der anderen Laschen gesperrt.
Jetzt würde ich gerne die Lasche kennzeichnen welche im Bearbeitungsmodus ist. Kennt jemand dazu eine Möglichkeit ???
Jetzt würde ich gerne die Lasche kennzeichnen welche im Bearbeitungsmodus ist. Kennt jemand dazu eine Möglichkeit ???
Win10/64|Ubuntu-Server|Mint WS // Programmiere Datenbankanwendungen und Tools mit PB-5.x und MySQL-5.x unter Win und Linux
Aus dem Englischen Forum
übrigens Lasche ist witzig 
übrigens Lasche ist witzig
Code: Alles auswählen
;===========================================
; Code : Colorize PanelGadget Tabs
; Author : Sparkie
; Date : 08/17/06
; PB Version : PB 4.00
; OS Support : Windows only
;===========================================
Global oldCallback
;... Create our background brush for use with tabs
Global greenBrush = CreateSolidBrush_(#Green)
;...Our subclassed PanelGadget events
Procedure myPGcallback(hwnd, msg, wParam, lParam)
result = CallWindowProc_(oldCallback, hwnd, msg, wParam, lParam)
Select msg
Case #WM_DRAWITEM
*PGdis.DRAWITEMSTRUCT = lParam
If *PGdis\CtlType = #ODT_TAB
Select *PGdis\itemID
;...Tabs that will appear with red text on a green background
Case 0, 2
tabText$ = GetGadgetItemText(0, *PGdis\itemID, 0)
FillRect_(*PGdis\hdc, *PGdis\rcItem, greenBrush)
SetTextColor_(*PGdis\hdc, #Red)
SetBkMode_(*PGdis\hdc, #TRANSPARENT)
DrawText_(*PGdis\hdc, tabText$, Len(tabText$), *PGdis\rcItem, #DT_CENTER | #DT_SINGLELINE | #DT_VCENTER | #DT_NOCLIP)
Default
;...Tabs that will appear with blue text on system default color
tabText$ = GetGadgetItemText(0, *PGdis\itemID, 0)
SetTextColor_(*PGdis\hdc, #Blue)
SetBkMode_(*PGdis\hdc, #TRANSPARENT)
DrawText_(*PGdis\hdc, tabText$, Len(tabText$), *PGdis\rcItem, #DT_CENTER | #DT_SINGLELINE | #DT_VCENTER | #DT_NOCLIP)
EndSelect
EndIf
EndSelect
ProcedureReturn result
EndProcedure
If OpenWindow(0, 0, 0, 322, 220,"",#PB_Window_SystemMenu|#PB_Window_ScreenCentered) And CreateGadgetList(WindowID(0))
PanelGadget(0, 8, 8, 306, 203)
AddGadgetItem (0, -1, "Panel 1")
ButtonGadget(1, 10, 30, 50, 20, "Hello")
AddGadgetItem (0, -1,"Panel 2")
ButtonGadget(2, 10, 30, 50, 20, "World")
AddGadgetItem (0, -1,"Panel 3")
ButtonGadget(3, 10, 30, 80, 20, "PureBasic")
CloseGadgetList()
; Ownderdraw and subcalss PanelGadget to colorize tabs
SetWindowLong_(GadgetID(0), #GWL_STYLE, GetWindowLong_(GadgetID(0), #GWL_STYLE) | #TCS_OWNERDRAWFIXED)
oldCallback = SetWindowLong_(GetParent_(GadgetID(0)), #GWL_WNDPROC, @myPGcallback())
Repeat
Event = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow
DeleteObject_(greenBrush)
EndIf
End
Purebasic 5.0 32bit und 64 bit
I'm back from hell
I'm back from hell
Ist es möglich hier irgendwie den Hintergrund von der Lasche herauszufinden?
(Also der Bereich unter der Lasche..)
mfg c4s
(Also der Bereich unter der Lasche..)
mfg c4s
"Menschenskinder, das Niveau dieses Forums singt schon wieder!" — GronkhLP ||| "ich hogffe ihr könnt den fehle endecken" — Marvin133 ||| "Ideoten gibts ..." — computerfreak ||| "Jup, danke. Gruss" — funkheld
Das einfärben der "Lasche" bzw der Schrift funktionieren sehr gut.
Wenn ich aber versuche die Schriftfarbe während des Programmablaufes mit der gleichen Prozedur erneut zu verändern erhalte ich eine Fehlermeldung. Hat jemand eine Idee ???
Wenn ich aber versuche die Schriftfarbe während des Programmablaufes mit der gleichen Prozedur erneut zu verändern erhalte ich eine Fehlermeldung. Hat jemand eine Idee ???
Win10/64|Ubuntu-Server|Mint WS // Programmiere Datenbankanwendungen und Tools mit PB-5.x und MySQL-5.x unter Win und Linux
Ich habe einige Versuche hinter mir und kann es leider nicht mehr alles nachvollziehen.... von stack overflow bis erhängt ist alles dabei.
Es dürfte daran liegen, dass man die Prozedur wohl nicht ohne weiteres ein zweites mal auf dem gleichen weg aufrufen kann.... Der wichtigste Grund dürfte sein, dass ich mich mit APIs überhaupt nicht auskenne..
Der erste Fehler ist leicht nachzuvollziehen...
einfach die Zeilen
SetWindowLong_(GadgetID(0), #GWL_STYLE, GetWindowLong_(GadgetID(0), #GWL_STYLE) | #TCS_OWNERDRAWFIXED)
oldCallback = SetWindowLong_(GetParent_(GadgetID(0)), #GWL_WNDPROC, @myPGcallback())
ohne veränderung ein zweites mal aufrufen....
Es dürfte daran liegen, dass man die Prozedur wohl nicht ohne weiteres ein zweites mal auf dem gleichen weg aufrufen kann.... Der wichtigste Grund dürfte sein, dass ich mich mit APIs überhaupt nicht auskenne..
Der erste Fehler ist leicht nachzuvollziehen...
einfach die Zeilen
SetWindowLong_(GadgetID(0), #GWL_STYLE, GetWindowLong_(GadgetID(0), #GWL_STYLE) | #TCS_OWNERDRAWFIXED)
oldCallback = SetWindowLong_(GetParent_(GadgetID(0)), #GWL_WNDPROC, @myPGcallback())
ohne veränderung ein zweites mal aufrufen....
Win10/64|Ubuntu-Server|Mint WS // Programmiere Datenbankanwendungen und Tools mit PB-5.x und MySQL-5.x unter Win und Linux
Welch edler Held....
Ein kleiner Schlag auf die Großhirnrinde und schon bin ich einen Schritt weiter.... dafür schon mal danke....
aktuell mache ich das so... dass ich über eine Globale Variable die Farbe beim nächsten event vorgebe und den event mit
SetGadgetState(0,0)
SetGadgetState(0,1)
herbeiführe.... zumindest tut das ...
wie würde der Provi das ohne Globale machen ??
Ein kleiner Schlag auf die Großhirnrinde und schon bin ich einen Schritt weiter.... dafür schon mal danke....
aktuell mache ich das so... dass ich über eine Globale Variable die Farbe beim nächsten event vorgebe und den event mit
SetGadgetState(0,0)
SetGadgetState(0,1)
herbeiführe.... zumindest tut das ...
wie würde der Provi das ohne Globale machen ??
Win10/64|Ubuntu-Server|Mint WS // Programmiere Datenbankanwendungen und Tools mit PB-5.x und MySQL-5.x unter Win und Linux