Seite 1 von 2
Toolbar "Highlight-Effekt" deaktivieren
Verfasst: 08.10.2008 13:56
von X0r
Hallo,
wie kann man den "Highlight-Effekt" bei einer toolbar deaktivieren(Also so wie es bei jaPBe ist)?
Verfasst: 08.10.2008 16:47
von cxAlex
Ich denke das das bei Jabe keine 'echte' Toolbar ist sondern aus Buttons zusammengestoppelt.
Verfasst: 09.10.2008 17:11
von X0r
Ja, wahrscheinlich, aber ist das trotzdem irgendwie möglich?
Verfasst: 09.10.2008 17:18
von Kiffi
X0r hat geschrieben:Ja, wahrscheinlich, aber ist das trotzdem irgendwie möglich?
möglich, eine 'unechte' Toolbar zu bauen? Falls ja: jaPBe liegt ja auch im
Source-Code vor [1]. Dort kannst Du Dir anschauen, wie GPI / gnozal das
gemacht haben.
[1]:
http://freenet-homepage.de/gnozal/jaPBeForPB400.7z
Grüße ... Kiffi
Verfasst: 09.10.2008 17:32
von Kaeru Gaman
nee, das war doch nicht seine basis-frage...
wenn es ein style-flag dafür gibt, dann wird man das mit ner message setzen/löschen können.
ich würde zielgerichtet in die Beschreibung des Fensterelements "Toolbar" auf der MSDN schauen.
Verfasst: 09.10.2008 22:40
von Fluid Byte
Code: Alles auswählen
#TBN_HOTITEMCHANGE = #TBN_FIRST - 13
OpenWindow(0,0,0,320,240,"void",#PB_Window_SystemMenu | #PB_Window_ScreenCentered)
CreateToolBar(0,WindowID(0))
For i=0 To 10 : ToolBarStandardButton(i,i) : Next
Procedure WindowCallback(hWnd,uMsg,wParam,lParam)
Select uMsg
Case #WM_NOTIFY
*nmh.NMHDR = lParam
Select *nmh\hwndFrom
Case ToolBarID(0)
Select *nmh\code
Case #TBN_HOTITEMCHANGE
ProcedureReturn 1
EndSelect
EndSelect
EndSelect
ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure
SetWindowCallback(@WindowCallback())
While WaitWindowEvent() ! #PB_Event_CloseWindow : Wend
Verfasst: 09.10.2008 23:21
von X0r
Vielen Dank!
Jetzt bin ich der Lösung meines Problems etwas näher gekommen.
Wie ich bekomm ich nun den Highlight-Effekt weg, der beim geklickt-halten auf ein Toolbar-Item entsteht?
Verfasst: 10.10.2008 01:58
von Fluid Byte
Hier ist eine Lösung die aber nicht ganz perfekt ist. Man sieht nicht das der Button gedrückt wurde. Also das X/Y-Offset plus 1 Pixel nach unten/rechts.
Code: Alles auswählen
#TBN_HOTITEMCHANGE = #TBN_FIRST - 13
#TBSTATE_MARKED = $80
OpenWindow(0,0,0,320,240,"void",#PB_Window_SystemMenu | #PB_Window_ScreenCentered)
CreateToolBar(0,WindowID(0))
SetWindowLong_(ToolBarID(0),#GWL_STYLE,#WS_CHILD | #WS_VISIBLE | #CCS_TOP | #TBSTYLE_CUSTOMERASE)
For i=0 To 10 : ToolBarStandardButton(100 + i,i) : Next
Procedure WindowCallback(hWnd,uMsg,wParam,lParam)
Select uMsg
Case #WM_NOTIFY
*nmh.NMHDR = lParam
If *nmh\hwndFrom = ToolBarID(0)
Select *nmh\code
Case #NM_CUSTOMDRAW
*nmtbc.NMTBCUSTOMDRAW = lParam
If *nmtbc\nmcd\dwDrawStage = #CDDS_ITEMPREPAINT
SendMessage_(ToolBarID(0),#TB_SETSTATE,*nmtbc\nmcd\dwItemSpec,#TBSTATE_ENABLED)
ProcedureReturn #CDRF_DODEFAULT
EndIf
ProcedureReturn #CDRF_NOTIFYITEMDRAW
Case #TBN_HOTITEMCHANGE
ProcedureReturn #True
EndSelect
EndIf
EndSelect
ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure
SetWindowCallback(@WindowCallback())
While WaitWindowEvent() ! #PB_Event_CloseWindow : Wend
Verfasst: 10.10.2008 02:02
von Kaeru Gaman
jetzt wunder ich mich aber doch...
wenn du ein toolbar willst, bei dem man nicht sieht, wenn die maus drüber ist und wenn was gedrückt wird...
warum nimmst du dann nicht gleich ein image und wertest den click drauf aus?
Verfasst: 10.10.2008 02:17
von Fluid Byte
Kaeru Gaman hat geschrieben:jetzt wunder ich mich aber doch...
wenn du ein toolbar willst, bei dem man nicht sieht, wenn die maus drüber ist und wenn was gedrückt wird...
warum nimmst du dann nicht gleich ein image und wertest den click drauf aus?
Hab' ich von Anfang an gedacht aber es kommt drauf an welche Funktionalitäten der Toolbar er nutzt. Es gibt viele Features die eine Standardlösung nicht bietet wie Buttonlabels, Gruppierung, Dropdownmenu oder Button-Wrapping. Ansonsten geb' ich dir recht das man andernfalls lieber Images benutzen sollte.