I am not english, but it seems correct to me.
http://66.102.9.104/search?q=cache:eJ9m ... Than&hl=en
Moderator: gnozal
I am not english, but it seems correct to me.
Code: Select all
Procedure MyWindowCallback(WindowID,Message,wParam,lParam)
Result = #PB_ProcessPureBasicEvents
Result = PureCOLOR_CallBack(WindowID,Message,wParam,lParam, Result)
ProcedureReturn Result
EndProcedure
;
Enumeration
#MainWindow
#TreeGadget
EndEnumeration
If OpenWindow(#MainWindow,0,0,355,180,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"PureCOLOR TreeGadget example") And CreateGadgetList(WindowID(0))
TreeGadget(#TreeGadget, 10,10,330,160)
For a = 0 To 10
AddGadgetItem (#TreeGadget,-1,"Normal Item "+Str(a))
AddGadgetItem (#TreeGadget,-1,"Node "+Str(a))
OpenTreeGadgetNode(#TreeGadget)
AddGadgetItem(#TreeGadget,-1,"Sub-Item 1")
OpenTreeGadgetNode(#TreeGadget)
AddGadgetItem(#TreeGadget,-1,"Sub-Item 1-1")
OpenTreeGadgetNode(#TreeGadget)
AddGadgetItem(#TreeGadget,-1,"Sub-Item 1-1-1")
OpenTreeGadgetNode(#TreeGadget)
AddGadgetItem(#TreeGadget,-1,"Sub-Item 1-1-1-1")
AddGadgetItem(#TreeGadget,-1,"Sub-Item 1-1-1-2")
AddGadgetItem(#TreeGadget,-1,"Sub-Item 1-1-1-3")
AddGadgetItem(#TreeGadget,-1,"Sub-Item 1-1-1-4")
CloseTreeGadgetNode(#TreeGadget)
AddGadgetItem(#TreeGadget,-1,"Sub-Item 1-1-2")
AddGadgetItem(#TreeGadget,-1,"Sub-Item 1-1-3")
AddGadgetItem(#TreeGadget,-1,"Sub-Item 1-1-4")
CloseTreeGadgetNode(#TreeGadget)
AddGadgetItem(#TreeGadget,-1,"Sub-Item 1-2")
AddGadgetItem(#TreeGadget,-1,"Sub-Item 1-3")
AddGadgetItem(#TreeGadget,-1,"Sub-Item 1-4")
CloseTreeGadgetNode(#TreeGadget)
AddGadgetItem(#TreeGadget,-1,"Sub-Item 2")
AddGadgetItem(#TreeGadget,-1,"Sub-Item 3")
AddGadgetItem(#TreeGadget,-1,"Sub-Item 4")
CloseTreeGadgetNode(#TreeGadget)
AddGadgetItem (#TreeGadget,-1,"File "+Str(a))
Next
; PureCOLOR_SetGadgetColor(#TreeGadget, $FF00FF, $00FFFF)
PureCOLOR_SetGadgetColorEx(#TreeGadget, $FF00FF, $00FFFF, #PureCOLOR_DontSetBackColor, #PureCOLOR_TV_NodeLevel1)
; PureCOLOR_SetGadgetColorEx(#TreeGadget, $FF00FF, $00FFFF, 0, #_PureCOLOR_TV_NodeLevel1)
PureCOLOR_SetGadgetColorEx(#TreeGadget, $FF00FF, $00FF00, 0, #PureCOLOR_TV_NodeLevel2)
PureCOLOR_SetGadgetColorEx(#TreeGadget, $0000FF, $FFFF00, 0, #PureCOLOR_TV_NodeLevel3)
PureCOLOR_SetGadgetColorEx(#TreeGadget, $00FFFF, $FFFF00, 0, #PureCOLOR_TV_NodeLevel4)
PureCOLOR_SetGadgetColorEx(#TreeGadget, $FF00FF, $FFFF00, 0, #PureCOLOR_LTV_SelectedItem)
SetWindowCallback(@MyWindowCallback())
Repeat : Until WaitWindowEvent()=#PB_Event_CloseWindow
EndIf
Code: Select all
* TREE GADGET
- #PureCOLOR_TV_NodeLevel1 [Param is a long (Param.l)]
Set colors for node level 1 (and TreeGadget background color) : TextColor.l, BackColor.l
If Param = #PureCOLOR_DontSetBackColor, there is no background color change
- #PureCOLOR_TV_NodeLevel2 [Param = 0]
Set colors for node level 2 (and TreeGadget background color) : TextColor.l, BackColor.l
- #PureCOLOR_TV_NodeLevel3 [Param = 0]
Set colors for node level 3 (and TreeGadget background color) : TextColor.l, BackColor.l
- #PureCOLOR_TV_NodeLevel4 [Param = 0]
Set colors for node level 4 (and TreeGadget background color) : TextColor.l, BackColor.l
The node levels > 4 are colored like node 1
* TREE OR LISTICON GADGETS
- #PureCOLOR_LTV_SelectedItem [Param = 0]
Set colors for the selected item : TextColor.l, BackColor.l
Code: Select all
PureCOLOR_SetTreeItemColor(gadget.l,item.l,backcolour.l,textcolour.l)
Like PureCOLOR_SetCellColor() for ListIcon, no. Not yet ?DoubleDutch wrote:is there a way of colouring a particular item in the tree gadget with the library? This overiding the depth colour settings...
eg:
(with the background colour setting being optional as before?)Code: Select all
PureCOLOR_SetTreeItemColor(gadget.l,item.l,backcolour.l,textcolour.l)
-Anthony
Code: Select all
Procedure MyWindowCallback(WindowID,Message,wParam,lParam)
Result = #PB_ProcessPureBasicEvents
Result = PureCOLOR_CallBack(WindowID,Message,wParam,lParam, Result)
ProcedureReturn Result
EndProcedure
;
Enumeration
#MainWindow
#TreeGadget
EndEnumeration
If OpenWindow(#MainWindow,0,0,355,180,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"PureCOLOR TreeGadget example") And CreateGadgetList(WindowID(0))
TreeGadget(#TreeGadget, 10,10,330,160)
For a = 0 To 10
AddGadgetItem (#TreeGadget,-1,"Normal Item "+Str(a))
AddGadgetItem (#TreeGadget,-1,"Node "+Str(a))
OpenTreeGadgetNode(#TreeGadget)
AddGadgetItem(#TreeGadget,-1,"Sub-Item 1")
OpenTreeGadgetNode(#TreeGadget)
AddGadgetItem(#TreeGadget,-1,"Sub-Item 1-1")
OpenTreeGadgetNode(#TreeGadget)
AddGadgetItem(#TreeGadget,-1,"Sub-Item 1-1-1")
OpenTreeGadgetNode(#TreeGadget)
AddGadgetItem(#TreeGadget,-1,"Sub-Item 1-1-1-1")
AddGadgetItem(#TreeGadget,-1,"Sub-Item 1-1-1-2")
AddGadgetItem(#TreeGadget,-1,"Sub-Item 1-1-1-3")
AddGadgetItem(#TreeGadget,-1,"Sub-Item 1-1-1-4")
CloseTreeGadgetNode(#TreeGadget)
AddGadgetItem(#TreeGadget,-1,"Sub-Item 1-1-2")
AddGadgetItem(#TreeGadget,-1,"Sub-Item 1-1-3")
AddGadgetItem(#TreeGadget,-1,"Sub-Item 1-1-4")
CloseTreeGadgetNode(#TreeGadget)
AddGadgetItem(#TreeGadget,-1,"Sub-Item 1-2")
AddGadgetItem(#TreeGadget,-1,"Sub-Item 1-3")
AddGadgetItem(#TreeGadget,-1,"Sub-Item 1-4")
CloseTreeGadgetNode(#TreeGadget)
AddGadgetItem(#TreeGadget,-1,"Sub-Item 2")
AddGadgetItem(#TreeGadget,-1,"Sub-Item 3")
AddGadgetItem(#TreeGadget,-1,"Sub-Item 4")
CloseTreeGadgetNode(#TreeGadget)
AddGadgetItem (#TreeGadget,-1,"File "+Str(a))
Next
; PureCOLOR_SetGadgetColor(#TreeGadget, $FF00FF, $00FFFF)
PureCOLOR_SetGadgetColorEx(#TreeGadget, $FF00FF, $00FFFF, #PureCOLOR_DontSetBackColor, #PureCOLOR_TV_NodeLevel1)
; PureCOLOR_SetGadgetColorEx(#TreeGadget, $FF00FF, $00FFFF, 0, #_PureCOLOR_TV_NodeLevel1)
PureCOLOR_SetGadgetColorEx(#TreeGadget, $FF00FF, $00FF00, 0, #PureCOLOR_TV_NodeLevel2)
PureCOLOR_SetGadgetColorEx(#TreeGadget, $0000FF, $FFFF00, 0, #PureCOLOR_TV_NodeLevel3)
PureCOLOR_SetGadgetColorEx(#TreeGadget, $00FFFF, $FFFF00, 0, #PureCOLOR_TV_NodeLevel4)
PureCOLOR_SetGadgetColorEx(#TreeGadget, $FF00FF, $FFFF00, 0, #PureCOLOR_LTV_SelectedItem)
PureCOLOR_SetTreeItemColor(#TreeGadget, 2, $AA00AA, $AAFFAA)
PureCOLOR_SetTreeItemColor(#TreeGadget, 20, $AA00AA, $AAFFAA)
SetWindowCallback(@MyWindowCallback())
Repeat : Until WaitWindowEvent()=#PB_Event_CloseWindow
EndIf
You can't do it without callbacks and some subclassing (although you can hide them), it's the way Windows works.Blade wrote:but should be done without using callbacks, they alway looks like some sort of hack)
Code: Select all
PureCOLOR_VirtualColorReg(1,rgb(255,0,0)) ; set virtual colour reg 1 to red
AddGadgetItem(#TreeGadget,-1,"Sub-~01Item~~ 1") ; add an item with default text colour for "Sub-" and then red for "Item" and back to default for " 1"
Fred, are you reading this... I'm sure that a compatible set of commands would be possible in Linux and OSX???This userlib should be really included with the other official libs !!!
Finally !DoubleDutch wrote:I'm happy!
Seems a bit complicated ... Isn't it possible with the existing functions ?DoubleDutch wrote:Being able to have type of control sequence to colour individual text items a different colour within a cell or tree...Code: Select all
PureCOLOR_VirtualColorReg(1,rgb(255,0,0)) ; set virtual colour reg 1 to red AddGadgetItem(#TreeGadget,-1,"Sub-~01Item~~ 1") ; add an item with default text colour for "Sub-" and then red for "Item" and back to default for " 1"
Well, althought I am not against it, I am not sure it is a good idea : it is not a 'developper' library written in ASM, it's a 'user' library compiled with Tailbite.This userlib should be really included with the other official libs !!!
Now I understand ; you mean having different colors in the same (sub)item ?DoubleDutch wrote:It may not have been clear, but in some circumstances I just want to be able to colour part of the text in a tree.
eg
users
anthony
joseph
the account is overdue, click here to send a reminder...
joshua
I would colour the "overdue" in say red, but the "here" in blue, the rest in black...
Can this be done already, or will the colouring have to be done at a lower level?
Code: Select all
Enumeration
#MainWindow
#MainGadget
EndEnumeration
#LVM_GETSUBITEMRECT = #LVM_FIRST + 56
#CDIS_CHECKED = 8
#CDIS_DEFAULT = $20
#CDIS_DISABLED = 4
#CDIS_FOCUS = $10
#CDIS_GRAYED = 2
#CDIS_HOT = $40
#CDIS_INDETERMINATE = $100
#CDIS_MARKED = $80
#CDIS_SELECTED = 1
#CDIS_SHOWKEYBOARDCUES = $200
#CDDS_ITEM = $10000
#CDDS_MAPPART = 5
#CDDS_POSTERASE = 4
#CDDS_POSTPAINT = 2
#CDDS_PREERASE = 3
#CDDS_PREPAINT = 1
#CDDS_ITEMPOSTERASE = #CDDS_ITEM | #CDDS_POSTERASE
#CDDS_ITEMPOSTPAINT = #CDDS_ITEM | #CDDS_POSTPAINT
#CDDS_ITEMPREERASE = #CDDS_ITEM | #CDDS_PREERASE
#CDDS_ITEMPREPAINT = #CDDS_ITEM | #CDDS_PREPAINT
#CDDS_SUBITEM = $20000
#CDRF_DODEFAULT = 0
#CDRF_NEWFONT = 2
#CDRF_NOTIFYITEMDRAW = $20
#CDRF_NOTIFYPOSTERASE = $40
#CDRF_NOTIFYPOSTPAINT = $10
#CDRF_NOTIFYSUBITEMDRAW = $20
#CDRF_SKIPDEFAULT = 4
#DT_WORD_ELLIPSIS = $40000
#DT_END_ELLIPSIS = $8000
#DT_PATH_ELLIPSIS = $4000
#DT_MODIFYSTRING = $10000
Procedure MyWindowCallback(WindowID,Message,wParam,lParam)
Result=#PB_ProcessPureBasicEvents
Select Message
Case #WM_NOTIFY
*lvCD.NMLVCUSTOMDRAW=lparam
If *lvCD\nmcd\hdr\hwndFrom=GadgetID(#MainGadget) And *lvCD\nmcd\hdr\code=#NM_CUSTOMDRAW
Select *LVCD\nmcd\dwDrawStage
Case #CDDS_PREPAINT:ProcedureReturn(#CDRF_NOTIFYITEMDRAW)
Case #CDDS_ITEMPREPAINT:ProcedureReturn(#CDRF_NOTIFYSUBITEMDRAW)
Case #CDDS_ITEMPREPAINT|#CDDS_SUBITEM
thisItem=*lvCD\nmcd\dwItemSpec
column=*lvCD\iSubItem ; possibly used in your routines?
subItemRect.RECT\left=#LVIR_LABEL
subItemRect.RECT\top=*lvCD\iSubItem
SendMessage_(GadgetID(#MainGadget),#LVM_GETSUBITEMRECT,thisItem,@subItemRect)
subItemText$=GetGadgetItemText(#MainGadget,*lvCD\nmcd\dwItemSpec,*lvCD\iSubItem)
sitLen=Len(subItemText$)
lvFlags=#DT_END_ELLIPSIS|#DT_WORDBREAK|#DT_VCENTER
If GetGadgetState(#MainGadget)=thisItem
BackgroundColour=RGB(255,0,128)
Else
BackgroundColour=RGB(Random(255),Random(255),Random(255))
EndIf
MyBrush=CreateSolidBrush_(BackgroundColour)
If MyBrush
FillRect_(*lvCD\nmcd\hDC,subItemRect,MyBrush)
DeleteObject_(MyBrush)
EndIf
If sitLen
For n=1 To sitLen
SetTextColor_(*lvCD\nmcd\hDC,RGB(Random(255),Random(255),Random(255)))
SetBkColor_(*lvCD\nmcd\hDC,RGB(0,0,0)) ; this appears to be ignored - so thats why there is a draw above
DrawText_(*lvCD\nmcd\hDC,Mid(subItemText$,n,1),1,subItemRect,lvFlags)
subItemRect.RECT\left+8 ; I don't know how to find the draw width of the character - maybe someone does???
Next
EndIf
ProcedureReturn(#CDRF_SKIPDEFAULT)
EndSelect
EndIf
EndSelect
ProcedureReturn Result
EndProcedure
If OpenWindow(#MainWindow,0,0,640,300,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"ListIconGadgets") And CreateGadgetList(WindowID(0))
; left column
ListIconGadget(#MainGadget, 10, 25, 600, 270, "Column 1",100)
For b=2 To 4 ; add 3 more columns to each listicon
AddGadgetColumn(#MainGadget,b,"Column "+Str(b),65)
Next
For b=0 To 2 ; add 4 items to each line of the listicons
AddGadgetItem(#MainGadget,b,"Item 1"+Chr(10)+"Item 2"+Chr(10)+"Item 3"+Chr(10)+"Item 4")
Next
SetWindowCallback(@MyWindowCallback())
Repeat : Until WaitWindowEvent()=#PB_Event_CloseWindow
EndIf