1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312
|
/////////////////////////////////////////////////////////////////////////////
// Name: listbox.h
// Purpose: interface of wxListBox
// Author: wxWidgets team
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
/**
@class wxListBox
A listbox is used to select one or more of a list of strings.
The strings are displayed in a scrolling box, with the selected string(s)
marked in reverse video. A listbox can be single selection (if an item is
selected, the previous selection is removed) or multiple selection
(clicking an item toggles the item on or off independently of other
selections).
List box elements are numbered from zero and while the maximal number of
elements is unlimited, it is usually better to use a virtual control, not
requiring to add all the items to it at once, such as wxDataViewCtrl or
wxListCtrl with @c wxLC_VIRTUAL style, once more than a few hundreds items
need to be displayed because this control is not optimized, neither from
performance nor from user interface point of view, for large number of
items.
Notice that currently @c TAB characters in list box items text are not
handled consistently under all platforms, so they should be replaced by
spaces to display strings properly everywhere. The list box doesn't
support any other control characters at all.
@beginStyleTable
@style{wxLB_SINGLE}
Single-selection list.
@style{wxLB_MULTIPLE}
Multiple-selection list: the user can toggle multiple items on and off.
This is the same as wxLB_EXTENDED in wxGTK2 port.
@style{wxLB_EXTENDED}
Extended-selection list: the user can extend the selection by using
@c SHIFT or @c CTRL keys together with the cursor movement keys or
the mouse.
@style{wxLB_HSCROLL}
Create horizontal scrollbar if contents are too wide (Windows only).
@style{wxLB_ALWAYS_SB}
Always show a vertical scrollbar.
@style{wxLB_NEEDED_SB}
Only create a vertical scrollbar if needed.
@style{wxLB_NO_SB}
Don't create vertical scrollbar (wxMSW and wxGTK only).
@style{wxLB_SORT}
The listbox contents are sorted in alphabetical order.
@endStyleTable
Note that @c wxLB_SINGLE, @c wxLB_MULTIPLE and @c wxLB_EXTENDED styles are
mutually exclusive and you can specify at most one of them (single selection
is the default). See also @ref overview_windowstyles.
@beginEventEmissionTable{wxCommandEvent}
@event{EVT_LISTBOX(id, func)}
Process a @c wxEVT_LISTBOX event, when an item on the
list is selected or the selection changes.
@event{EVT_LISTBOX_DCLICK(id, func)}
Process a @c wxEVT_LISTBOX_DCLICK event, when the listbox
is double-clicked.
@endEventTable
@library{wxcore}
@category{ctrl}
@appearance{listbox}
@see wxEditableListBox, wxChoice, wxComboBox, wxListCtrl, wxCommandEvent
*/
class wxListBox : public wxControl,
public wxItemContainer
{
public:
/**
Default constructor.
*/
wxListBox();
/**
Constructor, creating and showing a list box.
@param parent
The parent window.
@param id
The ID of this control. A value of @c wxID_ANY indicates a default value.
@param pos
The initial position.
If ::wxDefaultPosition is specified then a default position is chosen.
@param size
The initial size.
If ::wxDefaultSize is specified then the window is sized appropriately.
@param n
Number of strings with which to initialise the control.
@param choices
The strings to use to initialize the control.
@param style
Window style. See wxListBox.
@param validator
The validator for this control.
@param name
The name of this class.
@beginWxPerlOnly
Not supported by wxPerl.
@endWxPerlOnly
*/
wxListBox(wxWindow* parent, wxWindowID id,
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize,
int n = 0,
const wxString choices[] = NULL,
long style = 0,
const wxValidator& validator = wxDefaultValidator,
const wxString& name = wxListBoxNameStr);
/**
Constructor, creating and showing a list box.
See the other wxListBox() constructor; the only difference is that
this overload takes a wxArrayString instead of a pointer to an array
of wxString.
@beginWxPerlOnly
Use an array reference for the @a choices parameter.
@endWxPerlOnly
*/
wxListBox(wxWindow* parent, wxWindowID id,
const wxPoint& pos,
const wxSize& size,
const wxArrayString& choices,
long style = 0,
const wxValidator& validator = wxDefaultValidator,
const wxString& name = wxListBoxNameStr);
/**
Destructor, destroying the list box.
*/
virtual ~wxListBox();
//@{
/**
Creates the listbox for two-step construction.
See wxListBox() for further details.
*/
bool Create(wxWindow *parent, wxWindowID id,
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize,
int n = 0, const wxString choices[] = NULL,
long style = 0,
const wxValidator& validator = wxDefaultValidator,
const wxString& name = wxListBoxNameStr);
bool Create(wxWindow *parent, wxWindowID id,
const wxPoint& pos,
const wxSize& size,
const wxArrayString& choices,
long style = 0,
const wxValidator& validator = wxDefaultValidator,
const wxString& name = wxListBoxNameStr);
//@}
/**
Deselects an item in the list box.
@param n
The zero-based item to deselect.
@remarks This applies to multiple selection listboxes only.
*/
void Deselect(int n);
virtual void SetSelection(int n);
virtual int GetSelection() const;
virtual bool SetStringSelection(const wxString& s, bool select);
virtual bool SetStringSelection(const wxString& s);
/**
Fill an array of ints with the positions of the currently selected items.
@param selections
A reference to an wxArrayInt instance that is used to store the result of
the query.
@return The number of selections.
@remarks Use this with a multiple selection listbox.
@beginWxPerlOnly
In wxPerl this method takes no parameters and return the
selected items as a list.
@endWxPerlOnly
@see wxControlWithItems::GetSelection, wxControlWithItems::GetStringSelection,
wxControlWithItems::SetSelection
*/
virtual int GetSelections(wxArrayInt& selections) const;
/**
Returns the item located at @a point, or @c wxNOT_FOUND if there
is no item located at @a point.
It is currently implemented for wxMSW, wxMac and wxGTK2 ports.
@param point
Point of item (in client coordinates) to obtain
@return Item located at point, or wxNOT_FOUND if unimplemented or the
item does not exist.
@since 2.7.0
*/
int HitTest(const wxPoint& point) const;
/**
@overload
*/
int HitTest(int x, int y) const;
/**
Insert the given number of strings before the specified position.
@param nItems
Number of items in the array items
@param items
Labels of items to be inserted
@param pos
Position before which to insert the items: if pos is 0 the
items will be inserted in the beginning of the listbox
@beginWxPerlOnly
Not supported by wxPerl.
@endWxPerlOnly
*/
void InsertItems(unsigned int nItems, const wxString *items,
unsigned int pos);
/**
Insert the given number of strings before the specified position.
@param items
Labels of items to be inserted
@param pos
Position before which to insert the items: if pos is @c 0 the
items will be inserted in the beginning of the listbox
@beginWxPerlOnly
Use an array reference for the @a items parameter.
@endWxPerlOnly
*/
void InsertItems(const wxArrayString& items,
unsigned int pos);
/**
Determines whether an item is selected.
@param n
The zero-based item index.
@return @true if the given item is selected, @false otherwise.
*/
virtual bool IsSelected(int n) const;
/**
Set the specified item to be the first visible item.
@param n
The zero-based item index that should be visible.
*/
void SetFirstItem(int n);
/**
Set the specified item to be the first visible item.
@param string
The string that should be visible.
*/
void SetFirstItem(const wxString& string);
/**
Ensure that the item with the given index is currently shown.
Scroll the listbox if necessary.
This method is currently only implemented in wxGTK and wxOSX and does
nothing in other ports.
@see SetFirstItem()
*/
virtual void EnsureVisible(int n);
/**
Return true if the listbox has ::wxLB_SORT style.
This method is mostly meant for internal use only.
*/
virtual bool IsSorted() const;
// NOTE: Phoenix needs to see the implementation of pure virtuals so it
// knows that this class is not abstract.
virtual unsigned int GetCount() const;
virtual wxString GetString(unsigned int n) const;
virtual void SetString(unsigned int n, const wxString& s);
virtual int FindString(const wxString& s, bool bCase = false) const;
};
|