OK, einfach ausgedrückt: Ich habe ein PanelGadget (Tab Control), kriege aber kein Ereignis, wenn der Benutzer einen anderen Reiter ausgewählt hat.
Meine Callback:
Code: Alles auswählen
Procedure.l WindowCallback(WindowID, message, wParam, lParam)
Result = #PB_ProcessPureBasicEvents
Select message
Case #WM_SIZE
If WindowID = hStdPlan
ResizeGadget(#Gadget_StdPlanScrollArea, 0, 40, WindowWidth(), WindowHeight() - 60)
UpdateTB(#Toolbar_StdPlan)
EndIf
Case #WM_NOTIFY
*pnmh.NMHDR = lParam
Select *pnmh\code
[color=red]
Case #TCN_SELCHANGING
Debug "klick"
Result = #True
[/color]
Case #NM_CUSTOMDRAW
*LVCDHeader.NMLVCUSTOMDRAW = lParam
ForEach StdPlanTbls()
If *LVCDHeader\nmcd\hdr\hwndFrom = StdPlanTbls()\handle
Select *LVCDHeader\nmcd\dwDrawStage
Case #CDDS_PREPAINT
Result = #CDRF_NOTIFYITEMDRAW
Case #CDDS_ITEMPREPAINT
Result = #CDRF_NOTIFYSUBITEMDRAW
Case #CDDS_SUBITEMPREPAINT
Row = *LVCDHeader\nmcd\dwItemSpec
col = *LVCDHeader\iSubItem
If col = 0
SelectObject_(*LVCDHeader\nmcd\hdc, hCourierNewSmallBold)
Else
SelectObject_(*LVCDHeader\nmcd\hdc, hCourierNewSmall)
EndIf
If Row&1=0
*LVCDHeader\clrTextBk = RGB(255, 255, 223)
If col=3
*LVCDHeader\clrText = RGB(255, 0, 0)
Else
*LVCDHeader\clrText = RGB(0, 0, 0)
EndIf
Else
*LVCDHeader\clrTextBk = RGB(208, 208, 176)
If col=3
*LVCDHeader\clrText = RGB(0, 0, 255)
Else
*LVCDHeader\clrText = RGB(0, 0, 0)
EndIf
EndIf
Result = #CDRF_NEWFONT
EndSelect
Break
EndIf
Next
EndSelect
EndSelect
ProcedureReturn Result
EndProcedure
Ich denke das reicht verständnishalber aus. Oder braucht ihr nochwas?
NACHTRAG:
Ah, jetzt hab ich es
Das Change-Ereignis wird an die normale PB-Ereignisprozedur weitergegeben und kann mittels EventGadgetID() abgefragt werden. Weiß nicht genau, ob das so korrekt ist, wird aber fürs erste wohl ausreichen müssen ...