1. it crashes in combination with icons. I added an icon to the last entry:
AddGadgetItem(0, -1, "Didi Foundit"+ #LF$ + "321 Logo Drive, Mouse House, Downtown"
2. it changes the vertical alignment of the texts. I don't know why...
In the example below, the left one is with "setDelegate" (bottom aligned texts), the right one without (top aligned texts). Strange. Why the texts are not centered aligned in both cases?
Code: Select all
#IMG_Hide = 0
#thumb_savesize = 50
#colors_gra = $0000FF
CreateImage(#IMG_Hide, #thumb_savesize, #thumb_savesize, 24, #colors_gra)
If StartDrawing(ImageOutput(#IMG_Hide))
Circle(#thumb_savesize / 2, #thumb_savesize / 2, #thumb_savesize / 2.5, #colors_gra - $222222)
Circle(#thumb_savesize / 2, #thumb_savesize / 2, #thumb_savesize / 2.8, #colors_gra)
Box(#thumb_savesize / 2 - 3, #thumb_savesize / 2 - 16, 6, 32, #colors_gra - $222222)
StopDrawing()
EndIf
EnableExplicit
#WindowID = 0
Define AppDelegate.I = CocoaMessage(0, CocoaMessage(0, 0,
"NSApplication sharedApplication"), "delegate")
Define DelegateClass.I = CocoaMessage(0, AppDelegate, "class")
ProcedureC WillDisplayCell(Object.I, Selector.I, TableView.I, Cell.I, *Column, Row.I)
Protected Column.I
Protected CellText.S
Protected ListIconID.I
ListIconID = CocoaMessage(0, TableView, "tag")
Column = CocoaMessage(0, CocoaMessage(0, TableView, "tableColumns"), "indexOfObject:", *Column)
CocoaMessage(0, Cell, "_setVerticallyCentered:", #YES)
CellText = GetGadgetItemText(ListIconID, Row, Column)
CocoaMessage(0, Cell, "setStringValue:$", @CellText)
EndProcedure
ProcedureC ColumnHeaderClickCallback(Object.I, Selector.I, TableView.I, *Column)
Protected ClickedHeaderColumn.I
Protected ListIconID.I = CocoaMessage(0, TableView, "tag")
ClickedHeaderColumn = Val(PeekS(CocoaMessage(0,
CocoaMessage(0, *Column, "identifier"), "UTF8String"), -1, #PB_UTF8))
PostEvent(#PB_Event_Gadget, #WindowID, ListIconID, #PB_EventType_LeftClick, ClickedHeaderColumn + 1)
EndProcedure
OpenWindow(#WindowID, 200, 100, 825, 122, "Detect left click on header cell")
ListIconGadget(0, 10, 10, 400, WindowHeight(0) - 20, "Name", 110, #PB_ListIcon_GridLines)
AddGadgetColumn(0, 1, "Address", GadgetWidth(0) - GetGadgetItemAttribute(0, 0, #PB_ListIcon_ColumnWidth) - 8)
AddGadgetItem(0, -1, "Harry Rannit" + #LF$ + "12 Parliament Way, Battle Street, By the Bay")
AddGadgetItem(0, -1, "Ginger Brokeit"+ #LF$ + "130 PureBasic Road, BigTown, CodeCity")
AddGadgetItem(0, -1, "Didi Foundit"+ #LF$ + "321 Logo Drive, Mouse House, Downtown")
class_addMethod_(DelegateClass, sel_registerName_("tableView:willDisplayCell:forTableColumn:row:"), @WillDisplayCell(), "v@:@@@@")
class_addMethod_(DelegateClass, sel_registerName_("tableView:didClickTableColumn:"), @ColumnHeaderClickCallback(), "v@:@@")
CocoaMessage(0, GadgetID(0), "setDelegate:", AppDelegate)
ListIconGadget(1, 415, 10, 400, WindowHeight(0) - 20, "Name", 110, #PB_ListIcon_GridLines)
AddGadgetColumn(1, 1, "Address", GadgetWidth(0) - GetGadgetItemAttribute(0, 0, #PB_ListIcon_ColumnWidth) - 8)
AddGadgetItem(1, -1, "Harry Rannit" + #LF$ + "12 Parliament Way, Battle Street, By the Bay")
AddGadgetItem(1, -1, "Ginger Brokeit"+ #LF$ + "130 PureBasic Road, BigTown, CodeCity")
AddGadgetItem(1, -1, "Didi Foundit"+ #LF$ + "321 Logo Drive, Mouse House, Downtown")
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Break
Case #PB_Event_Gadget
If EventGadget() = 0 And EventType() = #PB_EventType_LeftClick
If EventData()
Debug "Left click on header of column " + Str(EventData() - 1)
Else
Debug "Left click on row " + Str(GetGadgetState(0))
EndIf
EndIf
EndSelect
ForEver