]> git.saurik.com Git - wxWidgets.git/blame - docs/latex/wx/vlbox.tex
test wxTE_NO_VSCROLL
[wxWidgets.git] / docs / latex / wx / vlbox.tex
CommitLineData
e0c6027b
VZ
1%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2%% Name: vlbox.tex
3%% Purpose: wxVListBox documentation
4%% Author: Vadim Zeitlin
5%% Modified by:
6%% Created: 01.06.03
7%% RCS-ID: $Id$
8%% Copyright: (c) 2003 Vadim Zeitlin <vadim@wxwindows.org>
8795498c 9%% License: wxWindows license
e0c6027b
VZ
10%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11
12\section{\class{wxVListBox}}\label{wxvlistbox}
13
14wxVListBox is a listbox-like control with the following two main differences
15from a regular listbox: it can have an arbitrarily huge number of items because
410bfc93 16it doesn't store them itself but uses \helpref{OnDrawItem()}{wxvlistboxondrawitem}
e0c6027b 17callback to draw them (so it is a {\Large V}irtual listbox) and its items can
410bfc93 18have variable height as determined by
e0c6027b
VZ
19\helpref{OnMeasureItem()}{wxvlistboxonmeasureitem} (so it is also a listbox
20with the lines of {\Large V}ariable height).
21
22Also, as a consequence of its virtual nature, it doesn't have any methods to
23append or insert items in it as it isn't necessary to do it: you just have to
24call \helpref{SetItemCount()}{wxvlistboxsetitemcount} to tell the control how
25many items it should display. Of course, this also means that you will never
26use this class directly because it has pure virtual functions, but will need to
27derive your own class, such as \helpref{wxHtmlListBox}{wxhtmllistbox}, from it.
28
29However it emits the same events as \helpref{wxListBox}{wxlistbox} and the same
30event macros may be used with it.
410bfc93 31
e0c6027b
VZ
32\wxheading{Derived from}
33
410bfc93
WS
34\helpref{wxVScrolledWindow}{wxvscrolledwindow}\\
35\helpref{wxPanel}{wxpanel}\\
36\helpref{wxWindow}{wxwindow}\\
37\helpref{wxEvtHandler}{wxevthandler}\\
38\helpref{wxObject}{wxobject}
e0c6027b
VZ
39
40\wxheading{Include files}
41
42<wx/vlbox.h>
43
9ebb7cad
VZ
44\wxheading{See also}
45
46\helpref{wxSimpleHtmlListBox}{wxsimplehtmllistbox}, \helpref{wxHtmlListBox}{wxhtmllistbox}
47
e0c6027b
VZ
48\latexignore{\rtfignore{\wxheading{Members}}}
49
50
51\membersection{wxVListBox::wxVListBox}\label{wxvlistboxctor}
52
53\func{}{wxVListBox}{\param{wxWindow* }{parent}, \param{wxWindowID }{id = wxID\_ANY}, \param{const wxPoint\& }{pos = wxDefaultPosition}, \param{const wxSize\& }{size = wxDefaultSize}, \param{size\_t }{countItems = 0}, \param{long }{style = 0}, \param{const wxString\& }{name = wxVListBoxNameStr}}
54
55Normal constructor which calls \helpref{Create()}{wxvlistboxcreate} internally.
56
57\func{}{wxVListBox}{\void}
58
59Default constructor, you must call \helpref{Create()}{wxvlistboxcreate} later.
60
61
62\membersection{wxVListBox::Clear}\label{wxvlistboxclear}
63
64\func{void}{Clear}{\void}
65
66Deletes all items from the control.
67
68
69\membersection{wxVListBox::Create}\label{wxvlistboxcreate}
70
0063c169 71\func{bool}{Create}{\param{wxWindow* }{parent}, \param{wxWindowID }{id = wxID\_ANY}, \param{const wxPoint\& }{pos = wxDefaultPosition}, \param{const wxSize\& }{size = wxDefaultSize}, \param{long }{style = 0}, \param{const wxString\& }{name = wxVListBoxNameStr}}
e0c6027b 72
410bfc93 73Creates the control. To finish creating it you also should call
0063c169
VZ
74\helpref{SetItemCount()}{wxvlistboxsetitemcount} to let it know about the
75number of items it contains.
e0c6027b 76
410bfc93 77The only special style which may be used with wxVListBox is {\tt wxLB\_MULTIPLE}
0063c169 78which indicates that the listbox should support multiple selection.
e0c6027b
VZ
79
80Returns {\tt true} on success or {\tt false} if the control couldn't be created
81
82
0063c169
VZ
83\membersection{wxVListBox::DeselectAll}\label{wxvlistboxdeselectall}
84
85\func{bool}{DeselectAll}{\void}
86
87Deselects all the items in the listbox.
88
89Returns {\tt true} if any items were changed, i.e. if there had been any
90selected items before, or {\tt false} if all the items were already deselected.
91
92This method is only valid for multi selection listboxes.
93
94\wxheading{See also}
95
96\helpref{SelectAll}{wxvlistboxselectall}, \helpref{Select}{wxvlistboxselect}
97
98
99\membersection{wxVListBox::GetFirstSelected}\label{wxvlistboxgetfirstselected}
100
101\constfunc{int}{GetFirstSelected}{\param{unsigned long\& }{cookie}}
102
410bfc93 103Returns the index of the first selected item in the listbox or
0063c169
VZ
104{\tt wxNOT\_FOUND} if no items are currently selected.
105
b52401b2 106\arg{cookie} is an opaque parameter which should be passed to the subsequent
0063c169
VZ
107calls to \helpref{GetNextSelected}{wxvlistboxgetnextselected}. It is needed in
108order to allow parallel iterations over the selected items.
109
110Here is a typical example of using these functions:
111\begin{verbatim}
112unsigned long cookie;
113int item = hlbox->GetFirstSelected(cookie);
114while ( item != wxNOT_FOUND )
115{
116 ... process item ...
117 item = hlbox->GetNextSelected(cookie);
118}
119\end{verbatim}
120
121This method is only valid for multi selection listboxes.
122
123
e0c6027b
VZ
124\membersection{wxVListBox::GetItemCount}\label{wxvlistboxgetitemcount}
125
126\constfunc{size\_t}{GetItemCount}{\void}
127
128Get the number of items in the control.
129
130\wxheading{See also}
131
132\helpref{SetItemCount()}{wxvlistboxsetitemcount}
133
134
0063c169
VZ
135\membersection{wxVListBox::GetMargins}\label{wxvlistboxgetmargins}
136
137\constfunc{wxPoint}{GetMargins}{\void}
138
139Returns the margins used by the control. The {\tt x} field of the returned
dbd94b75 140point is the horizontal margin and the {\tt y} field is the vertical one.
0063c169
VZ
141
142\wxheading{See also}
143
144\helpref{SetMargins}{wxvlistboxsetmargins}
145
146
147\membersection{wxVListBox::GetNextSelected}\label{wxvlistboxgetnextselected}
148
149\constfunc{int}{GetNextSelected}{\param{unsigned long\& }{cookie}}
150
151Returns the index of the next selected item or {\tt wxNOT\_FOUND} if there are
152no more.
153
154This method is only valid for multi selection listboxes.
155
156\wxheading{See also}
157
158\helpref{GetFirstSelected}{wxvlistboxgetfirstselected}
159
160
161\membersection{wxVListBox::GetSelectedCount}\label{wxvlistboxgetselectedcount}
162
163\constfunc{size\_t}{GetSelectedCount}{\void}
164
165Returns the number of the items currently selected.
166
167It is valid for both single and multi selection controls. In the former case it
168may only return $0$ or $1$ however.
169
170\wxheading{See also}
171
172\helpref{IsSelected}{wxvlistboxisselected},\\
173\helpref{GetFirstSelected}{wxvlistboxgetfirstselected},\\
174\helpref{GetNextSelected}{wxvlistboxgetnextselected}
175
176
e0c6027b
VZ
177\membersection{wxVListBox::GetSelection}\label{wxvlistboxgetselection}
178
179\constfunc{int}{GetSelection}{\void}
180
410bfc93 181Get the currently selected item or {\tt wxNOT\_FOUND} if there is no selection.
e0c6027b
VZ
182
183
de5d3a20
VZ
184\membersection{wxVListBox::GetSelectionBackground}\label{wxvlistboxgetselectionbackground}
185
186\constfunc{const wxColour\&}{GetSelectionBackground}{\void}
187
188Returns the background colour used for the selected cells. By default the
189standard system colour is used.
190
191\wxheading{See also}
192
193\helpref{wxSystemSettings::GetColour}{wxsystemsettingsgetcolour},\\
194\helpref{SetSelectionBackground}{wxvlistboxsetselectionbackground}
195
196
0063c169
VZ
197\membersection{wxVListBox::HasMultipleSelection}\label{wxvlistboxishasmultipleselection}
198
199\constfunc{bool}{HasMultipleSelection}{\void}
200
201Returns {\tt true} if the listbox was created with {\tt wxLB\_MULTIPLE} style
202and so supports multiple selection or {\tt false} if it is a single selection
203listbox.
204
205
206\membersection{wxVListBox::IsCurrent}\label{wxvlistboxiscurrent}
207
208\constfunc{bool}{IsCurrent}{\param{size\_t }{item}}
209
210Returns {\tt true} if this item is the current one, {\tt false} otherwise.
211
212Current item is always the same as selected one for the single selection
410bfc93 213listbox and in this case this method is equivalent to
0063c169
VZ
214\helpref{IsSelected}{wxvlistboxisselected} but they are different for multi
215selection listboxes where many items may be selected but only one (at most) is
216current.
217
218
e0c6027b
VZ
219\membersection{wxVListBox::IsSelected}\label{wxvlistboxisselected}
220
0063c169 221\constfunc{bool}{IsSelected}{\param{size\_t }{item}}
e0c6027b
VZ
222
223Returns {\tt true} if this item is selected, {\tt false} otherwise.
224
225
b52401b2
VZ
226\membersection{wxVListBox::OnDrawBackground}\label{wxvlistboxondrawbackground}
227
228\constfunc{void}{OnDrawBackground}{\param{wxDC\& }{dc}, \param{const wxRect\& }{rect}, \param{size\_t }{n}}
229
230This method is used to draw the items background and, maybe, a border
231around it.
232
233The base class version implements a reasonable default behaviour which
234consists in drawing the selected item with the standard background
235colour and drawing a border around the item if it is either selected or
236current.
237
238
e0c6027b
VZ
239\membersection{wxVListBox::OnDrawItem}\label{wxvlistboxondrawitem}
240
241\constfunc{void}{OnDrawItem}{\param{wxDC\& }{dc}, \param{const wxRect\& }{rect}, \param{size\_t }{n}}
242
243The derived class must implement this function to actually draw the item
244with the given index on the provided DC.
245
246\wxheading{Parameters}
247
248\docparam{dc}{The device context to use for drawing}
249
250\docparam{rect}{The bounding rectangle for the item being drawn (DC clipping
251region is set to this rectangle before calling this function)}
252
253\docparam{n}{The index of the item to be drawn}
254
255
256\membersection{wxVListBox::OnDrawSeparator}\label{wxvlistboxondrawseparator}
257
258\constfunc{void}{OnDrawSeparator}{\param{wxDC\& }{dc}, \param{wxRect\& }{rect}, \param{size\_t }{n}}
259
260This method may be used to draw separators between the lines. The rectangle
261passed to it may be modified, typically to deflate it a bit before passing to
262\helpref{OnDrawItem()}{wxvlistboxondrawitem}.
263
264The base class version of this method doesn't do anything.
265
266\wxheading{Parameters}
267
268\docparam{dc}{The device context to use for drawing}
269
270\docparam{rect}{The bounding rectangle for the item}
271
272\docparam{n}{The index of the item}
273
274
275\membersection{wxVListBox::OnMeasureItem}\label{wxvlistboxonmeasureitem}
276
277\constfunc{wxCoord}{OnMeasureItem}{\param{size\_t }{n}}
278
279The derived class must implement this method to return the height of the
280specified item (in pixels).
281
282
0063c169
VZ
283\membersection{wxVListBox::Select}\label{wxvlistboxselect}
284
285\func{bool}{Select}{\param{size\_t }{item}, \param{bool }{select = true}}
286
287Selects or deselects the specified item which must be valid (i.e. not
288equal to {\tt wxNOT\_FOUND}).
289
290Return {\tt true} if the items selection status has changed or {\tt false}
291otherwise.
292
410bfc93 293This function is only valid for the multiple selection listboxes, use
0063c169
VZ
294\helpref{SetSelection}{wxvlistboxsetselection} for the single selection ones.
295
296
297\membersection{wxVListBox::SelectAll}\label{wxvlistboxselectall}
298
299\func{bool}{SelectAll}{\void}
300
301Selects all the items in the listbox.
302
303Returns {\tt true} if any items were changed, i.e. if there had been any
304unselected items before, or {\tt false} if all the items were already selected.
305
306This method is only valid for multi selection listboxes.
307
308\wxheading{See also}
309
310\helpref{DeselectAll}{wxvlistboxdeselectall}, \helpref{Select}{wxvlistboxselect}
311
312
313\membersection{wxVListBox::SelectRange}\label{wxvlistboxselectrange}
314
315\func{bool}{SelectRange}{\param{size\_t }{from}, \param{size\_t }{to}}
316
317Selects all items in the specified range which may be given in any order.
318
319Return {\tt true} if the items selection status has changed or {\tt false}
320otherwise.
321
322This method is only valid for multi selection listboxes.
323
324\wxheading{See also}
325
326\helpref{SelectAll}{wxvlistboxselectall}, \helpref{Select}{wxvlistboxselect}
327
684761db 328\membersection{wxVListBox::SetItemCount}\label{wxvlistboxsetitemcount}
e0c6027b
VZ
329
330\func{void}{SetItemCount}{\param{size\_t }{count}}
331
332Set the number of items to be shown in the control.
333
334This is just a synonym for
335\helpref{wxVScrolledWindow::SetLineCount()}{wxvscrolledwindowsetlinecount}.
336
337
338\membersection{wxVListBox::SetMargins}\label{wxvlistboxsetmargins}
339
340\func{void}{SetMargins}{\param{const wxPoint\& }{pt}}
341
342\func{void}{SetMargins}{\param{wxCoord }{x}, \param{wxCoord }{y}}
343
344Set the margins: horizontal margin is the distance between the window
345border and the item contents while vertical margin is half of the
346distance between items.
347
348By default both margins are $0$.
349
350
351\membersection{wxVListBox::SetSelection}\label{wxvlistboxsetselection}
352
353\func{void}{SetSelection}{\param{int }{selection}}
354
355Set the selection to the specified item, if it is $-1$ the selection is
356unset. The selected item will be automatically scrolled into view if it isn't
357currently visible.
358
de5d3a20
VZ
359This method may be used both with single and multiple selection listboxes.
360
361
362\membersection{wxVListBox::SetSelectionBackground}\label{wxvlistboxsetselectionbackground}
363
364\func{void}{SetSelectionBackground}{\param{const wxColour\& }{col}}
365
366Sets the colour to be used for the selected cells background. The background of
410bfc93 367the standard cells may be changed by simply calling
de5d3a20
VZ
368\helpref{SetBackgroundColour}{wxwindowsetbackgroundcolour}.
369
63e02796
VZ
370Notice that using non-default background colour may result in control having
371appearance different from the similar native controls and so should in general
372be avoided.
373
de5d3a20
VZ
374\wxheading{See also}
375
376\helpref{GetSelectionBackground}{wxvlistboxgetselectionbackground}
377
0063c169
VZ
378
379\membersection{wxVListBox::Toggle}\label{wxvlistboxtoggle}
380
381\func{void}{Toggle}{\param{size\_t }{item}}
382
b52401b2 383Toggles the state of the specified \arg{item}, i.e. selects it if it was
0063c169
VZ
384unselected and deselects it if it was selected.
385
386This method is only valid for multi selection listboxes.
387
388\wxheading{See also}
389
390\helpref{Select}{wxvlistboxselect}
b67a86d5 391