]>
git.saurik.com Git - wxWidgets.git/blob - interface/vlbox.h
1 /////////////////////////////////////////////////////////////////////////////
3 // Purpose: interface of wxVListBox
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}
37 @see wxSimpleHtmlListBox, wxHtmlListBox
39 class wxVListBox
: public wxVScrolledWindow
44 Default constructor, you must call Create() later.
46 wxVListBox(wxWindow
* parent
, wxWindowID id
= wxID_ANY
,
47 const wxPoint
& pos
= wxDefaultPosition
,
48 const wxSize
& size
= wxDefaultSize
,
49 size_t countItems
= 0, long style
= 0,
50 const wxString
& name
= wxVListBoxNameStr
);
55 Deletes all items from the control.
60 Creates the control. To finish creating it you also should call
61 SetItemCount() to let it know about the
62 number of items it contains.
63 The only special style which may be used with wxVListBox is @c wxLB_MULTIPLE
64 which indicates that the listbox should support multiple selection.
65 Returns @true on success or @false if the control couldn't be created
67 bool Create(wxWindow
* parent
, wxWindowID id
= wxID_ANY
,
68 const wxPoint
& pos
= wxDefaultPosition
,
69 const wxSize
& size
= wxDefaultSize
,
71 const wxString
& name
= wxVListBoxNameStr
);
74 Deselects all the items in the listbox.
75 Returns @true if any items were changed, i.e. if there had been any
76 selected items before, or @false if all the items were already deselected.
77 This method is only valid for multi selection listboxes.
79 @see SelectAll(), Select()
84 Returns the index of the first selected item in the listbox or
85 @c wxNOT_FOUND if no items are currently selected.
86 @a cookie is an opaque parameter which should be passed to the subsequent
87 calls to GetNextSelected(). It is needed in
88 order to allow parallel iterations over the selected items.
89 Here is a typical example of using these functions:
91 This method is only valid for multi selection listboxes.
93 int GetFirstSelected(unsigned long& cookie
) const;
96 Get the number of items in the control.
100 size_t GetItemCount() const;
103 Returns the margins used by the control. The @c x field of the returned
104 point is the horizontal margin and the @c y field is the vertical one.
108 wxPoint
GetMargins() const;
111 Returns the index of the next selected item or @c wxNOT_FOUND if there are
113 This method is only valid for multi selection listboxes.
115 @see GetFirstSelected()
117 int GetNextSelected(unsigned long& cookie
) const;
120 Returns the number of the items currently selected.
121 It is valid for both single and multi selection controls. In the former case it
122 may only return 0 or 1 however.
124 @see IsSelected(), GetFirstSelected(),
127 size_t GetSelectedCount() const;
130 Get the currently selected item or @c wxNOT_FOUND if there is no selection.
132 int GetSelection() const;
135 Returns the background colour used for the selected cells. By default the
136 standard system colour is used.
138 @see wxSystemSettings::GetColour, SetSelectionBackground()
140 const wxColour
GetSelectionBackground() const;
143 Returns @true if the listbox was created with @c wxLB_MULTIPLE style
144 and so supports multiple selection or @false if it is a single selection
147 bool HasMultipleSelection() const;
150 Returns @true if this item is the current one, @false otherwise.
151 Current item is always the same as selected one for the single selection
152 listbox and in this case this method is equivalent to
153 IsSelected() but they are different for multi
154 selection listboxes where many items may be selected but only one (at most) is
157 bool IsCurrent(size_t item
) const;
160 Returns @true if this item is selected, @false otherwise.
162 bool IsSelected(size_t item
) const;
165 This method is used to draw the items background and, maybe, a border
167 The base class version implements a reasonable default behaviour which
168 consists in drawing the selected item with the standard background
169 colour and drawing a border around the item if it is either selected or
172 void OnDrawBackground(wxDC
& dc
, const wxRect
& rect
, size_t n
) const;
175 The derived class must implement this function to actually draw the item
176 with the given index on the provided DC.
179 The device context to use for drawing
181 The bounding rectangle for the item being drawn (DC clipping
182 region is set to this rectangle before calling this function)
184 The index of the item to be drawn
186 void OnDrawItem(wxDC
& dc
, const wxRect
& rect
, size_t n
) const;
189 This method may be used to draw separators between the lines. The rectangle
190 passed to it may be modified, typically to deflate it a bit before passing to
192 The base class version of this method doesn't do anything.
195 The device context to use for drawing
197 The bounding rectangle for the item
199 The index of the item
201 void OnDrawSeparator(wxDC
& dc
, wxRect
& rect
, size_t n
) const;
204 The derived class must implement this method to return the height of the
205 specified item (in pixels).
207 wxCoord
OnMeasureItem(size_t n
) const;
210 Selects or deselects the specified item which must be valid (i.e. not
211 equal to @c wxNOT_FOUND).
212 Return @true if the items selection status has changed or @false
214 This function is only valid for the multiple selection listboxes, use
215 SetSelection() for the single selection ones.
217 bool Select(size_t item
, bool select
= true);
220 Selects all the items in the listbox.
221 Returns @true if any items were changed, i.e. if there had been any
222 unselected items before, or @false if all the items were already selected.
223 This method is only valid for multi selection listboxes.
225 @see DeselectAll(), Select()
230 Selects all items in the specified range which may be given in any order.
231 Return @true if the items selection status has changed or @false
233 This method is only valid for multi selection listboxes.
235 @see SelectAll(), Select()
237 bool SelectRange(size_t from
, size_t to
);
240 Set the number of items to be shown in the control.
241 This is just a synonym for
242 wxVScrolledWindow::SetRowCount.
244 void SetItemCount(size_t count
);
248 Set the margins: horizontal margin is the distance between the window
249 border and the item contents while vertical margin is half of the
250 distance between items.
251 By default both margins are 0.
253 void SetMargins(const wxPoint
& pt
);
254 void SetMargins(wxCoord x
, wxCoord y
);
258 Set the selection to the specified item, if it is -1 the selection is
259 unset. The selected item will be automatically scrolled into view if it isn't
261 This method may be used both with single and multiple selection listboxes.
263 void SetSelection(int selection
);
266 Sets the colour to be used for the selected cells background. The background of
267 the standard cells may be changed by simply calling
268 wxWindow::SetBackgroundColour.
269 Notice that using non-default background colour may result in control having
270 appearance different from the similar native controls and so should in general
273 @see GetSelectionBackground()
275 void SetSelectionBackground(const wxColour
& col
);
278 Toggles the state of the specified @e item, i.e. selects it if it was
279 unselected and deselects it if it was selected.
280 This method is only valid for multi selection listboxes.
282 void Toggle(size_t item
);