]> git.saurik.com Git - wxWidgets.git/blame - docs/latex/wx/listctrl.tex
GTK
[wxWidgets.git] / docs / latex / wx / listctrl.tex
CommitLineData
a660d684
KB
1\section{\class{wxListCtrl}}\label{wxlistctrl}
2
3A list control presents lists in a number of formats: list view, report view, icon view
4and small icon view. Elements are numbered from zero.
5
6To intercept events from a list control, use the event table macros described in \helpref{wxListEvent}{wxlistevent}.
7
8\wxheading{Derived from}
9
10\helpref{wxControl}{wxcontrol}\\
11\helpref{wxWindow}{wxwindow}\\
12\helpref{wxEvtHandler}{wxevthandler}\\
13\helpref{wxObject}{wxobject}
14
15\wxheading{Window styles}
16
17\twocolwidtha{5cm}
18\begin{twocollist}\itemsep=0pt
19\twocolitem{\windowstyle{wxLC\_LIST}}{multicolumn list view, with optional small icons.
20Columns are computed automatically, i.e. you don't set columns as in wxLC\_REPORT. In other words,
21the list wraps, unlike a wxListBox.}
22\twocolitem{\windowstyle{wxLC\_REPORT}}{single or multicolumn report view, with optional header.}
23\twocolitem{\windowstyle{wxLC\_ICON}}{Large icon view, with optional labels.}
24\twocolitem{\windowstyle{wxLC\_SMALL\_ICON}}{Small icon view, with optional labels.}
25\twocolitem{\windowstyle{wxLC\_ALIGN\_TOP}}{Icons align to the top (default).}
26\twocolitem{\windowstyle{wxLC\_ALIGN\_LEFT}}{Icons align to the left.}
27\twocolitem{\windowstyle{wxLC\_AUTOARRANGE}}{Icons arrange themselves.}
28\twocolitem{\windowstyle{wxLC\_USER\_TEXT}}{The application provides label text on demand, except for column headers.}
29\twocolitem{\windowstyle{wxLC\_EDIT\_LABELS}}{Labels are editable: the application will be notified when editing starts.}
30\twocolitem{\windowstyle{wxLC\_NO\_HEADER}}{No header in report mode.}
31\twocolitem{\windowstyle{wxLC\_SINGLE\_SEL}}{Single selection.}
32\twocolitem{\windowstyle{wxLC\_SORT\_ASCENDING}}{Sort in ascending order (must still supply a comparison callback in SortItems.}
33\twocolitem{\windowstyle{wxLC\_SORT\_DESCENDING}}{Sort in descending order (must still supply a comparison callback in SortItems.}
34\end{twocollist}
35
36See also \helpref{window styles overview}{windowstyles}.
37
38\wxheading{See also}
39
40\helpref{wxListCtrl overview}{wxlistctrloverview}, \helpref{wxListBox}{wxlistbox}, \helpref{wxTreeCtrl}{wxtreectrl},\rtfsp
41\helpref{wxImageList}{wximagelist}, \helpref{wxListEvent}{wxlistevent}
42
43\latexignore{\rtfignore{\wxheading{Members}}}
44
45\membersection{wxListCtrl::wxListCtrl}\label{wxlistctrlconstr}
46
47\func{}{wxListCtrl}{\void}
48
49Default constructor.
50
51\func{}{wxListCtrl}{\param{wxWindow*}{ parent}, \param{const wxWindowID}{ id},\rtfsp
52\param{const wxPoint\&}{ pos = wxDefaultPosition}, \param{const wxSize\&}{ size = wxDefaultSize},\rtfsp
53\param{const long}{ style = wxLC\_ICON}, \param{const wxValidator\& }{validator = wxDefaultValidator}, \param{const wxString\& }{name = ``listCtrl"}}
54
55Constructor, creating and showing a list control.
56
57\wxheading{Parameters}
58
59\docparam{parent}{Parent window. Must not be NULL.}
60
61\docparam{id}{Window identifier. A value of -1 indicates a default value.}
62
63\docparam{pos}{Window position.}
64
65\docparam{size}{Window size. If the default size (-1, -1) is specified then the window is sized
66appropriately.}
67
68\docparam{style}{Window style. See \helpref{wxListCtrl}{wxlistctrl}.}
69
70\docparam{validator}{Window validator.}
71
72\docparam{name}{Window name.}
73
74\wxheading{See also}
75
76\helpref{wxListCtrl::Create}{wxlistctrlcreate}, \helpref{wxValidator}{wxvalidator}
77
78\membersection{wxListCtrl::\destruct{wxListCtrl}}
79
80\func{void}{\destruct{wxListCtrl}}{\void}
81
82Destructor, destroying the list control.
83
84\membersection{wxListCtrl::Arrange}\label{wxlistctrlarrange}
85
86\func{bool}{Arrange}{\param{const int }{flag = wxLIST\_ALIGN\_DEFAULT}}
87
88Arranges the items in icon or small icon view. {\it flag} is one of:
89
90\twocolwidtha{5cm}
91\begin{twocollist}\itemsep=0pt
92\twocolitem{wxLIST\_ALIGN\_DEFAULT}{Default alignment.}
93\twocolitem{wxLIST\_ALIGN\_LEFT}{Align to the left side of the control.}
94\twocolitem{wxLIST\_ALIGN\_TOP}{Align to the top side of the control.}
95\twocolitem{wxLIST\_ALIGN\_SNAP\_TO\_GRID}{Snap to grid.}
96\end{twocollist}
97
98\membersection{wxListCtrl::Create}\label{wxlistctrlcreate}
99
100\func{bool}{Create}{\param{wxWindow*}{ parent}, \param{const wxWindowID}{ id},\rtfsp
101\param{const wxPoint\&}{ pos = wxDefaultPosition}, \param{const wxSize\&}{ size = wxDefaultSize},\rtfsp
102\param{const long}{ style = wxLC\_ICON}, \param{const wxValidator\& }{validator = wxDefaultValidator}, \param{const wxString\& }{name = ``listCtrl"}}
103
104Creates the list control. See \helpref{wxListCtrl::wxListCtrl}{wxlistctrlconstr} for further details.
105
106\membersection{wxListCtrl::DeleteItem}\label{wxlistctrldeleteitem}
107
108\func{bool}{DeleteItem}{\param{const long }{item}}
109
110Deletes the specified item.
111
112\membersection{wxListCtrl::DeleteAllItems}\label{wxlistctrldeleteallitems}
113
114\func{bool}{DeleteAllItems}{\void}
115
116Deletes all the items in the list control.
117
118\membersection{wxListCtrl::DeleteColumn}\label{wxlistctrldeletecolumn}
119
120\func{bool}{DeleteColumn}{\param{const int }{col}}
121
122Deletes a column.
123
124\membersection{wxListCtrl::Edit}\label{wxlistctrledit}
125
126\func{wxTextCtrl\&}{Edit}{\param{const long }{item}}
127
128Starts editing a label.
129
130\membersection{wxListCtrl::EnsureVisible}\label{wxlistctrlensurevisible}
131
132\func{bool}{EnsureVisible}{\param{const long }{item}}
133
134Ensures this item is visible.
135
136\membersection{wxListCtrl::FindItem}\label{wxlistctrlfinditem}
137
138\func{long}{FindItem}{\param{const long }{start}, \param{const wxString\& }{str}, \param{const bool }{partial = FALSE}}
139
140Find an item whose label matches this string, starting from the item after {\it start} or
141the beginning if {\it start} is -1.
142
143\func{long}{FindItem}{\param{const long }{start}, \param{const long }{data}}
144
145Find an item whose data matches this data, starting from the item after {\it start} or
146the beginning if 'start' is -1.
147
148\func{long}{FindItem}{\param{const long }{start}, \param{const wxPoint\& }{pt}, \param{const int }{direction}}
149
150Find an item nearest this position in the specified direction, starting from
151the item after {\it start} or the beginning if {\it start} is -1.
152
153\membersection{wxListCtrl::GetColumn}\label{wxlistctrlgetcolumn}
154
155\constfunc{bool}{GetColumn}{\param{const int }{col}, \param{wxListItem\& }{item}}
156
157Gets information about this column. See \helpref{wxListCtrl::SetItem}{wxlistctrlsetitem} for more
158information.
159
160\membersection{wxListCtrl::GetColumnWidth}\label{wxlistctrlgetcolumnwidth}
161
162\constfunc{int}{GetColumnWidth}{\param{const int }{col}}
163
164Gets the column width (report view only).
165
166\membersection{wxListCtrl::GetCountPerPage}\label{wxlistctrlgetcountperpage}
167
168\constfunc{int}{GetCountPerPage}{\void}
169
170Gets the number of items that can fit vertically in the
171visible area of the list control (list or report view)
172or the total number of items in the list control (icon
173or small icon view).
174
175\membersection{wxListCtrl::GetEditControl}\label{wxlistctrlgeteditcontrol}
176
177\constfunc{wxTextCtrl\&}{GetEditControl}{\void}
178
179Gets the edit control for editing labels.
180
181\membersection{wxListCtrl::GetImageList}\label{wxlistctrlgetimagelist}
182
183\constfunc{wxImageList*}{GetImageList}{\param{const int }{which}}
184
185Returns the specified image list. {\it which} may be one of:
186
187\twocolwidtha{5cm}
188\begin{twocollist}\itemsep=0pt
189\twocolitem{\windowstyle{wxIMAGE\_LIST\_NORMAL}}{The normal (large icon) image list.}
190\twocolitem{\windowstyle{wxIMAGE\_LIST\_SMALL}}{The small icon image list.}
191\twocolitem{\windowstyle{wxIMAGE\_LIST\_STATE}}{The user-defined state image list (unimplemented).}
192\end{twocollist}
193
194\membersection{wxListCtrl::GetItem}\label{wxlistctrlgetitem}
195
196\constfunc{bool}{GetItem}{\param{wxListItem\& }{info}}
197
198Gets information about the item. See \helpref{wxListCtrl::SetItem}{wxlistctrlsetitem} for more
199information.
200
201\membersection{wxListCtrl::GetItemData}\label{wxlistctrlgetitemdata}
202
203\constfunc{long}{GetItemData}{\param{const long }{item}}
204
205Gets the application-defined data associated with this item.
206
207\membersection{wxListCtrl::GetItemPosition}\label{wxlistctrlgetitemposition}
208
209\constfunc{bool}{GetItemPosition}{\param{const long }{item}, \param{wxPoint\& }{pos}}
210
211Returns the position of the item, in icon or small icon view.
212
213\membersection{wxListCtrl::GetItemRect}\label{wxlistctrlgetitemrect}
214
215\constfunc{bool}{GetItemRect}{\param{const long }{item}, \param{wxRect\& }{rect}, \param{const int }{code = wxLIST\_RECT\_BOUNDS}}
216
217Returns the rectangle representing the item's size and position, in client coordinates.
218
219{\it code} is one of wxLIST\_RECT\_BOUNDS, wxLIST\_RECT\_ICON, wxLIST\_RECT\_LABEL.
220
221\membersection{wxListCtrl::GetItemState}\label{wxlistctrlgetitemstate}
222
223\constfunc{int}{GetItemState}{\param{const long }{item}, \param{const long }{stateMask}}
224
225Gets the item state. For a list of state flags, see \helpref{wxListCtrl::SetItem}{wxlistctrlsetitem}.
226
227The {\bf stateMask} indicates which state flags are of interest.
228
229\membersection{wxListCtrl::GetItemCount}\label{wxlistctrlgetitemcount}
230
231\constfunc{int}{GetItemCount}{\void}
232
233Returns the number of items in the list control.
234
235\membersection{wxListCtrl::GetItemSpacing}\label{wxlistctrlgetitemspacing}
236
237\constfunc{int}{GetItemSpacing}{\param{bool }{isSmall}}
238
239Retrieves the spacing between icons in pixels.
240If {\it small} is TRUE, gets the spacing for the small icon
241view, otherwise the large icon view.
242
243\membersection{wxListCtrl::GetItemText}\label{wxlistctrlgetitemtext}
244
245\constfunc{wxString}{GetItemText}{\param{const long }{item}}
246
247Gets the item text for this item.
248
249\membersection{wxListCtrl::GetNextItem}\label{wxlistctrlgetnextitem}
250
251\constfunc{long}{GetNextItem}{\param{const long }{item}, \param{int }{geometry = wxLIST\_NEXT\_ALL}, \param{int }{state = wxLIST\_STATE\_DONTCARE}}
252
253Searches for an item with the given goemetry or state, starting from {\it item}. {\it item} can be -1
254to find the first item that matches the specified flags.
255
256Returns the item or -1 if unsuccessful.
257
258{\it geometry} can be one of:
259
260\twocolwidtha{5cm}
261\begin{twocollist}\itemsep=0pt
262\twocolitem{wxLIST\_NEXT\_ABOVE}{Searches for an item above the specified item.}
263\twocolitem{wxLIST\_NEXT\_ALL}{Searches for subsequent item by index.}
264\twocolitem{wxLIST\_NEXT\_BELOW}{Searches for an item below the specified item.}
265\twocolitem{wxLIST\_NEXT\_LEFT}{Searches for an item to the left of the specified item.}
266\twocolitem{wxLIST\_NEXT\_RIGHT}{Searches for an item to the right of the specified item.}
267\end{twocollist}
268
269{\it state} can be a bitlist of the following:
270
271\twocolwidtha{5cm}
272\begin{twocollist}\itemsep=0pt
273\twocolitem{wxLIST\_STATE\_DONTCARE}{Don't care what the state is.}
274\twocolitem{wxLIST\_STATE\_DROPHILITED}{The item indicates it is a drop target.}
275\twocolitem{wxLIST\_STATE\_FOCUSED}{The item has the focus.}
276\twocolitem{wxLIST\_STATE\_SELECTED}{The item is selected.}
277\twocolitem{wxLIST\_STATE\_CUT}{The item is selected as part of a cut and paste operation.}
278\end{twocollist}
279
280\membersection{wxListCtrl::GetSelectedItemCount}\label{wxlistctrlgetselecteditemcount}
281
282\constfunc{int}{GetSelectedItemCount}{\void}
283
284Returns the number of selected items in the list control.
285
286\membersection{wxListCtrl::GetTextColour}\label{wxlistctrlgettextcolour}
287
288\constfunc{wxColour}{GetTextColour}{\void}
289
290Gets the text colour of the list control.
291
292\membersection{wxListCtrl::GetTopItem}\label{wxlistctrlgettopitem}
293
294\constfunc{long}{GetTopItem}{\void}
295
296Gets the index of the topmost visible item when in
297list or report view.
298
299\membersection{wxListCtrl::HitTest}\label{wxlistctrlhittest}
300
301\func{long}{HitTest}{\param{const wxPoint\& }{point}, \param{int\& }{flags}}
302
303Determines which item (if any) is at the specified point,
304giving details in {\it flags}. {\it flags} will be a combination of the following flags:
305
306\twocolwidtha{5cm}
307\begin{twocollist}\itemsep=0pt
308\twocolitem{wxLIST\_HITTEST\_ABOVE}{Above the client area.}
309\twocolitem{wxLIST\_HITTEST\_BELOW}{Below the client area.}
310\twocolitem{wxLIST\_HITTEST\_NOWHERE}{In the client area but below the last item.}
311\twocolitem{wxLIST\_HITTEST\_ONITEMICON}{On the bitmap associated with an item.}
312\twocolitem{wxLIST\_HITTEST\_ONITEMLABEL}{On the label (string) associated with an item.}
313\twocolitem{wxLIST\_HITTEST\_ONITEMRIGHT}{In the area to the right of an item.}
314\twocolitem{wxLIST\_HITTEST\_ONITEMSTATEICON}{On the state icon for a tree view item that is in a user-defined state.}
315\twocolitem{wxLIST\_HITTEST\_TOLEFT}{To the right of the client area.}
316\twocolitem{wxLIST\_HITTEST\_TORIGHT}{To the left of the client area.}
317\twocolitem{wxLIST\_HITTEST\_ONITEM}{Combination of wxLIST\_HITTEST\_ONITEMICON, wxLIST\_HITTEST\_ONITEMLABEL,
318wxLIST\_HITTEST\_ONITEMSTATEICON.}
319\end{twocollist}
320
321\membersection{wxListCtrl::InsertColumn}\label{wxlistctrlinsertcolumn}
322
323\func{long}{InsertColumn}{\param{const long }{col}, \param{wxListItem\& }{info}}
324
325For list view mode (only), inserts a column. For more details, see \helpref{wxListCtrl::SetItem}{wxlistctrlsetitem}.
326
327\func{long}{InsertColumn}{\param{const long }{col}, \param{const wxString\& }{heading}, \param{const int }{format = wxLIST\_FORMAT\_LEFT},\rtfsp
328\param{const int }{width = -1}}
329
330For list view mode (only), inserts a column. For more details, see \helpref{wxListCtrl::SetItem}{wxlistctrlsetitem}.
331
332\membersection{wxListCtrl::InsertItem}\label{wxlistctrlinsertitem}
333
334\func{long}{InsertItem}{\param{wxListItem\& }{info}}
335
336Inserts an item, returning the index of the new item if successful,
337-1 otherwise.
338
339\func{long}{InsertItem}{\param{const long }{index}, \param{const wxString\& }{label}}
340
341Inserts a string item.
342
343\func{long}{InsertItem}{\param{const long }{index}, \param{const int }{imageIndex}}
344
345Inserts an image item.
346
347\func{long}{InsertItem}{\param{const long }{index}, \param{const wxString\& }{label}, \param{const int }{imageIndex}}
348
349Insert an image/string item.
350
351\membersection{wxListCtrl::ScrollList}\label{wxlistctrlscrolllist}
352
353\func{bool}{ScrollList}{\param{const int }{dx}, \param{const int }{dy}}
354
355Scrolls the list control. If in icon, small icon or report view mode,
356dx specifies the number of pixels to scroll. If in list view mode, dx
357specifies the number of columns to scroll.
358
359If in icon, small icon or list view mode, dy specifies the number of pixels
360to scroll. If in report view mode, dy specifies the number of lines to scroll.
361
362\membersection{wxListCtrl::SetBackgroundColour}\label{wxlistctrlsetbackgroundcolour}
363
364\func{void}{SetBackgroundColour}{\param{const wxColour\& }{col}}
365
366Sets the background colour (GetBackgroundColour already implicit in
367wxWindow class).
368
369\membersection{wxListCtrl::SetColumn}\label{wxlistctrlsetcolumn}
370
371\func{bool}{SetColumn}{\param{const int }{col}, \param{wxListItem\& }{item}}
372
373Sets information about this column. See \helpref{wxListCtrl::SetItem}{wxlistctrlsetitem} for more
374information.
375
376\membersection{wxListCtrl::SetColumnWidth}\label{wxlistctrlsetcolumnwidth}
377
378\func{bool}{SetColumnWidth}{\param{const int }{col}, \param{const int }{width}}
379
380Sets the column width (report view only).
381
382{\it width} can be a width in pixels or wxLIST\_AUTOSIZE (-1) or wxLIST\_AUTOSIZE\_USEHEADER (-2).
383
384\membersection{wxListCtrl::SetImageList}\label{wxlistctrlsetimagelist}
385
386\func{void}{SetImageList}{\param{wxImageList*}{ imageList}, \param{const int }{which}}
387
388Sets the image list associated with the control. {\it which} is one of
389wxIMAGE\_LIST\_NORMAL, wxIMAGE\_LIST\_SMALL, wxIMAGE\_LIST\_STATE (the last is unimplemented).
390
391\membersection{wxListCtrl::SetItem}\label{wxlistctrlsetitem}
392
393\func{bool}{SetItem}{\param{wxListItem\& }{info}}
394
395Sets information about the item.
396
397wxListItem is a class with the following members:
398
399\twocolwidtha{5cm}
400\begin{twocollist}\itemsep=0pt
401\twocolitem{long m\_mask}{Indicates which fields are valid. See the list of valid mask flags below.}
402\twocolitem{long m\_itemId}{The zero-based item position.}
403\twocolitem{int m\_col}{Zero-based column, if in report mode.}
404\twocolitem{long m\_state}{The state of the item. See the list of valid state flags below.}
405\twocolitem{long m\_stateMask}{A mask indicating which state flags are valid. See the list of valid state flags below.}
406\twocolitem{wxString m\_text}{The label/header text.}
407\twocolitem{int m\_image}{The zero-based index into an image list.}
408\twocolitem{long m\_data}{Application-defined data.}
409\twocolitem{int m\_format}{For columns only: the format. Can be wxLIST\_FORMAT\_LEFT, wxLIST\_FORMAT\_RIGHT or
410wxLIST\_FORMAT\_CENTRE.}
411\twocolitem{int m\_width}{For columns only: the column width.}
412\end{twocollist}
413
414The {\bf m\_mask} member contains a bitlist specifying which of the other fields are valid. The flags are:
415
416\twocolwidtha{5cm}
417\begin{twocollist}\itemsep=0pt
418\twocolitem{wxLIST\_MASK\_STATE}{The {\bf m\_state} field is valid.}
419\twocolitem{wxLIST\_MASK\_TEXT}{The {\bf m\_text} field is valid.}
420\twocolitem{wxLIST\_MASK\_IMAGE}{The {\bf m\_image} field is valid.}
421\twocolitem{wxLIST\_MASK\_DATA}{The {\bf m\_data} field is valid.}
422\twocolitem{wxLIST\_MASK\_WIDTH}{The {\bf m\_width} field is valid.}
423\twocolitem{wxLIST\_MASK\_FORMAT}{The {\bf m\_format} field is valid.}
424\end{twocollist}
425
426The {\bf m\_stateMask} and {\bf m\_state} members take flags from the following:
427
428\twocolwidtha{5cm}
429\begin{twocollist}\itemsep=0pt
430\twocolitem{wxLIST\_STATE\_DONTCARE}{Don't care what the state is.}
431\twocolitem{wxLIST\_STATE\_DROPHILITED}{The item is highlighted to receive a drop event.}
432\twocolitem{wxLIST\_STATE\_FOCUSED}{The item has the focus.}
433\twocolitem{wxLIST\_STATE\_SELECTED}{The item is selected.}
434\twocolitem{wxLIST\_STATE\_CUT}{The item is in the cut state.}
435\end{twocollist}
436
437\func{long}{SetItem}{\param{const long }{index}, \param{const int }{col}, \param{const wxString\& }{label}, \param{const int }{imageId = -1}}
438
439Sets a string field at a particular column.
440
441\membersection{wxListCtrl::SetItemData}\label{wxlistctrlsetitemdata}
442
443\func{bool}{SetItemData}{\param{const long }{item}, \param{long }{data}}
444
445Associates application-defined data with this item.
446
447\membersection{wxListCtrl::SetItemImage}\label{wxlistctrlsetitemimage}
448
449\func{bool}{SetItemImage}{\param{const long }{item}, \param{const int }{image}, \param{const int }{selImage}}
450
451Sets the unselected and selected images associated with the item. The images are indices into the
452image list associated with the list control.
453
454\membersection{wxListCtrl::SetItemPosition}\label{wxlistctrlsetitemposition}
455
456\func{bool}{SetItemPosition}{\param{const long }{item}, \param{const wxPoint\& }{pos}}
457
458Sets the position of the item, in icon or small icon view.
459
460\membersection{wxListCtrl::SetItemState}\label{wxlistctrlsetitemstate}
461
462\func{bool}{SetItemState}{\param{const long }{item}, \param{const long }{state}, \param{const long }{stateMask}}
463
464Sets the item state. For a list of state flags, see \helpref{wxListCtrl::SetItem}{wxlistctrlsetitem}.
465
466The {\bf stateMask} indicates which state flags are valid.
467
468\membersection{wxListCtrl::SetItemText}\label{wxlistctrlsetitemtext}
469
470\func{void}{SetItemText}{\param{const long }{item}, \param{const wxString\& }{text}}
471
472Sets the item text for this item.
473
474\membersection{wxListCtrl::SetSingleStyle}\label{wxlistctrlsetsinglestyle}
475
476\func{void}{SetSingleStyle}{\param{const long }{style}, \param{const bool }{add = TRUE}}
477
478Adds or removes a single window style.
479
480\membersection{wxListCtrl::SetTextColour}\label{wxlistctrlsettextcolour}
481
482\func{void}{SetTextColour}{\param{const wxColour\& }{col}}
483
484Sets the text colour of the list control.
485
486\membersection{wxListCtrl::SetWindowStyleFlag}\label{wxlistctrlsetwindowstyleflag}
487
488\func{void}{SetWindowStyleFlag}{\param{const long }{style}}
489
490Sets the whole window style.
491
492\membersection{wxListCtrl::SortItems}\label{wxlistctrlsortitems}
493
494\func{bool}{SortItems}{\param{wxListCtrlCompare }{fn}, \param{long }{data}}
495
496Sorts the items in the list control.
497
498fn is a function which takes 3 long arguments: item1, item2, data.
499
500item1 is the long data associated with a first item (NOT the index).
501
502item2 is the long data associated with a second item (NOT the index).
503
504data is the same value as passed to SortItems.
505
506The return value is a negative number if the first item should precede the second
507item, a positive number of the second item should precede the first,
508or zero if the two items are equivalent.
509
510data is arbitrary data to be passed to the sort function.
511