]>
git.saurik.com Git - wxWidgets.git/blob - interface/vlbox.h
1 /////////////////////////////////////////////////////////////////////////////
3 // Purpose: documentation for wxVListBox class
4 // Author: wxWidgets team
6 // Licence: wxWindows license
7 /////////////////////////////////////////////////////////////////////////////
13 wxVListBox is a listbox-like control with the following two main differences
14 from a regular listbox: it can have an arbitrarily huge number of items because
15 it doesn't store them itself but uses wxVListBox::OnDrawItem
16 callback to draw them (so it is a Virtual listbox) and its items can
17 have variable height as determined by
18 wxVListBox::OnMeasureItem (so it is also a listbox
19 with the lines of Variable height).
21 Also, as a consequence of its virtual nature, it doesn't have any methods to
22 append or insert items in it as it isn't necessary to do it: you just have to
23 call wxVListBox::SetItemCount to tell the control how
24 many items it should display. Of course, this also means that you will never
25 use this class directly because it has pure virtual functions, but will need to
26 derive your own class, such as wxHtmlListBox, from it.
28 However it emits the same events as wxListBox and the same
29 event macros may be used with it. Since wxVListBox does not store its items
30 itself, the events will only contain the index, not any contents such as the
35 @appearance{vlistbox.png}
38 wxSimpleHtmlListBox, wxHtmlListBox
40 class wxVListBox
: public wxVScrolledWindow
45 Default constructor, you must call Create() later.
47 wxVListBox(wxWindow
* parent
, wxWindowID id
= wxID_ANY
,
48 const wxPoint
& pos
= wxDefaultPosition
,
49 const wxSize
& size
= wxDefaultSize
,
50 size_t countItems
= 0, long style
= 0,
51 const wxString
& name
= wxVListBoxNameStr
);
56 Deletes all items from the control.
61 Creates the control. To finish creating it you also should call
62 SetItemCount() to let it know about the
63 number of items it contains.
65 The only special style which may be used with wxVListBox is @c wxLB_MULTIPLE
66 which indicates that the listbox should support multiple selection.
68 Returns @true on success or @false if the control couldn't be created
70 bool Create(wxWindow
* parent
, wxWindowID id
= wxID_ANY
,
71 const wxPoint
& pos
= wxDefaultPosition
,
72 const wxSize
& size
= wxDefaultSize
,
74 const wxString
& name
= wxVListBoxNameStr
);
77 Deselects all the items in the listbox.
79 Returns @true if any items were changed, i.e. if there had been any
80 selected items before, or @false if all the items were already deselected.
82 This method is only valid for multi selection listboxes.
84 @sa SelectAll(), Select()
89 Returns the index of the first selected item in the listbox or
90 @c wxNOT_FOUND if no items are currently selected.
92 @e cookie is an opaque parameter which should be passed to the subsequent
93 calls to GetNextSelected(). It is needed in
94 order to allow parallel iterations over the selected items.
96 Here is a typical example of using these functions:
98 This method is only valid for multi selection listboxes.
100 int GetFirstSelected(unsigned long& cookie
);
103 Get the number of items in the control.
107 size_t GetItemCount();
110 Returns the margins used by the control. The @c x field of the returned
111 point is the horizontal margin and the @c y field is the vertical one.
115 wxPoint
GetMargins();
118 Returns the index of the next selected item or @c wxNOT_FOUND if there are
121 This method is only valid for multi selection listboxes.
123 @sa GetFirstSelected()
125 int GetNextSelected(unsigned long& cookie
);
128 Returns the number of the items currently selected.
130 It is valid for both single and multi selection controls. In the former case it
131 may only return 0 or 1 however.
133 @sa IsSelected(), GetFirstSelected(),
136 size_t GetSelectedCount();
139 Get the currently selected item or @c wxNOT_FOUND if there is no selection.
144 Returns the background colour used for the selected cells. By default the
145 standard system colour is used.
147 @sa wxSystemSettings::GetColour, SetSelectionBackground()
149 const wxColour
GetSelectionBackground();
152 Returns @true if the listbox was created with @c wxLB_MULTIPLE style
153 and so supports multiple selection or @false if it is a single selection
156 bool HasMultipleSelection();
159 Returns @true if this item is the current one, @false otherwise.
161 Current item is always the same as selected one for the single selection
162 listbox and in this case this method is equivalent to
163 IsSelected() but they are different for multi
164 selection listboxes where many items may be selected but only one (at most) is
167 bool IsCurrent(size_t item
);
170 Returns @true if this item is selected, @false otherwise.
172 bool IsSelected(size_t item
);
175 This method is used to draw the items background and, maybe, a border
178 The base class version implements a reasonable default behaviour which
179 consists in drawing the selected item with the standard background
180 colour and drawing a border around the item if it is either selected or
183 void OnDrawBackground(wxDC
& dc
, const wxRect
& rect
, size_t n
);
186 The derived class must implement this function to actually draw the item
187 with the given index on the provided DC.
190 The device context to use for drawing
193 The bounding rectangle for the item being drawn (DC clipping
194 region is set to this rectangle before calling this function)
197 The index of the item to be drawn
199 void OnDrawItem(wxDC
& dc
, const wxRect
& rect
, size_t n
);
202 This method may be used to draw separators between the lines. The rectangle
203 passed to it may be modified, typically to deflate it a bit before passing to
206 The base class version of this method doesn't do anything.
209 The device context to use for drawing
212 The bounding rectangle for the item
215 The index of the item
217 void OnDrawSeparator(wxDC
& dc
, wxRect
& rect
, size_t n
);
220 The derived class must implement this method to return the height of the
221 specified item (in pixels).
223 wxCoord
OnMeasureItem(size_t n
);
226 Selects or deselects the specified item which must be valid (i.e. not
227 equal to @c wxNOT_FOUND).
229 Return @true if the items selection status has changed or @false
232 This function is only valid for the multiple selection listboxes, use
233 SetSelection() for the single selection ones.
235 bool Select(size_t item
, bool select
= @
true);
238 Selects all the items in the listbox.
240 Returns @true if any items were changed, i.e. if there had been any
241 unselected items before, or @false if all the items were already selected.
243 This method is only valid for multi selection listboxes.
245 @sa DeselectAll(), Select()
250 Selects all items in the specified range which may be given in any order.
252 Return @true if the items selection status has changed or @false
255 This method is only valid for multi selection listboxes.
257 @sa SelectAll(), Select()
259 bool SelectRange(size_t from
, size_t to
);
262 Set the number of items to be shown in the control.
264 This is just a synonym for
265 wxVScrolledWindow::SetRowCount.
267 void SetItemCount(size_t count
);
271 Set the margins: horizontal margin is the distance between the window
272 border and the item contents while vertical margin is half of the
273 distance between items.
275 By default both margins are 0.
277 void SetMargins(const wxPoint
& pt
);
278 void SetMargins(wxCoord x
, wxCoord y
);
282 Set the selection to the specified item, if it is -1 the selection is
283 unset. The selected item will be automatically scrolled into view if it isn't
286 This method may be used both with single and multiple selection listboxes.
288 void SetSelection(int selection
);
291 Sets the colour to be used for the selected cells background. The background of
292 the standard cells may be changed by simply calling
293 wxWindow::SetBackgroundColour.
295 Notice that using non-default background colour may result in control having
296 appearance different from the similar native controls and so should in general
299 @sa GetSelectionBackground()
301 void SetSelectionBackground(const wxColour
& col
);
304 Toggles the state of the specified @e item, i.e. selects it if it was
305 unselected and deselects it if it was selected.
307 This method is only valid for multi selection listboxes.
309 void Toggle(size_t item
);