| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264 |
- /////////////////////////////////////////////////////////////////////////////
- // Name: odcombo.h
- // Purpose: interface of wxOwnerDrawnComboBox
- // Author: wxWidgets team
- // Licence: wxWindows licence
- /////////////////////////////////////////////////////////////////////////////
- enum wxOwnerDrawnComboBoxPaintingFlags
- {
- /**
- Combo control is being painted, instead of a list item.
- Argument item may be @c wxNOT_FOUND in this case.
- */
- wxODCB_PAINTING_CONTROL = 0x0001,
- /**
- An item with selection background is being painted.
- DC text colour should already be correct.
- */
- wxODCB_PAINTING_SELECTED = 0x0002
- };
- /**
- New window styles for wxOwnerDrawnComboBox
- */
- enum
- {
- /**
- Double-clicking cycles item if wxCB_READONLY is also used.
- */
- wxODCB_DCLICK_CYCLES = wxCC_SPECIAL_DCLICK,
- /**
- If used, control itself is not custom paint using callback.
- Even if this is not used, writable combo is never custom paint
- until SetCustomPaintWidth is called
- */
- wxODCB_STD_CONTROL_PAINT = 0x1000
- };
- /**
- @class wxOwnerDrawnComboBox
- wxOwnerDrawnComboBox is a combobox with owner-drawn list items.
- In essence, it is a wxComboCtrl with wxVListBox popup and wxControlWithItems
- interface.
- Implementing item drawing and measuring is similar to wxVListBox.
- Application needs to subclass wxOwnerDrawnComboBox and implement
- OnDrawItem(), OnMeasureItem() and OnMeasureItemWidth().
- @beginStyleTable
- @style{wxODCB_DCLICK_CYCLES}
- Double-clicking cycles item if wxCB_READONLY is also used.
- Synonymous with wxCC_SPECIAL_DCLICK.
- @style{wxODCB_STD_CONTROL_PAINT}
- Control itself is not custom painted using OnDrawItem. Even if this
- style is not used, writable wxOwnerDrawnComboBox is never custom
- painted unless SetCustomPaintWidth() is called.
- @endStyleTable
- @see wxComboCtrl window styles and @ref overview_windowstyles.
- @beginEventEmissionTable{wxCommandEvent}
- @event{EVT_COMBOBOX(id, func)}
- Process a wxEVT_COMBOBOX event, when an item on
- the list is selected. Note that calling GetValue() returns the new
- value of selection.
- @endEventTable
- @see Events emitted by wxComboCtrl.
- @library{wxadv}
- @category{ctrl}
- @appearance{ownerdrawncombobox}
- @see wxComboCtrl, wxComboBox, wxVListBox, wxCommandEvent
- */
- class wxOwnerDrawnComboBox : public wxComboCtrl, public wxItemContainer
- {
- public:
- /**
- Default constructor.
- */
- wxOwnerDrawnComboBox();
- /**
- Constructor, creating and showing a owner-drawn combobox.
- @param parent
- Parent window. Must not be @NULL.
- @param id
- Window identifier. The value @c wxID_ANY indicates a default value.
- @param value
- Initial selection string. An empty string indicates no selection.
- @param pos
- Window position.
- @param size
- Window size.
- If ::wxDefaultSize is specified then the window is sized appropriately.
- @param n
- Number of strings with which to initialise the control.
- @param choices
- An array of strings with which to initialise the control.
- @param style
- Window style. See wxOwnerDrawnComboBox.
- @param validator
- Window validator.
- @param name
- Window name.
- @see Create(), wxValidator
- */
- wxOwnerDrawnComboBox(wxWindow* parent, wxWindowID id,
- const wxString& value = wxEmptyString,
- 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 = "comboBox");
- /**
- Constructor, creating and showing a owner-drawn combobox.
- @param parent
- Parent window. Must not be @NULL.
- @param id
- Window identifier. The value @c wxID_ANY indicates a default value.
- @param value
- Initial selection string. An empty string indicates no selection.
- @param pos
- Window position.
- @param size
- Window size.
- If ::wxDefaultSize is specified then the window is sized appropriately.
- @param choices
- An array of strings with which to initialise the control.
- @param style
- Window style. See wxOwnerDrawnComboBox.
- @param validator
- Window validator.
- @param name
- Window name.
- @see Create(), wxValidator
- */
- wxOwnerDrawnComboBox(wxWindow* parent, wxWindowID id,
- const wxString& value,
- const wxPoint& pos,
- const wxSize& size,
- const wxArrayString& choices,
- long style = 0,
- const wxValidator& validator = wxDefaultValidator,
- const wxString& name = "comboBox");
- /**
- Destructor, destroying the owner-drawn combobox.
- */
- virtual ~wxOwnerDrawnComboBox();
- //@{
- /**
- Creates the combobox for two-step construction.
- See wxOwnerDrawnComboBox() for further details.
- @remarks Derived classes should call or replace this function.
- */
- bool Create(wxWindow *parent,
- wxWindowID id,
- const wxString& value = wxEmptyString,
- const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize,
- long style = 0,
- const wxValidator& validator = wxDefaultValidator,
- const wxString& name = wxComboBoxNameStr);
- bool Create(wxWindow *parent,
- wxWindowID id,
- const wxString& value,
- const wxPoint& pos,
- const wxSize& size,
- int n,
- const wxString choices[],
- long style = 0,
- const wxValidator& validator = wxDefaultValidator,
- const wxString& name = wxComboBoxNameStr);
- bool Create(wxWindow *parent,
- wxWindowID id,
- const wxString& value,
- const wxPoint& pos,
- const wxSize& size,
- const wxArrayString& choices,
- long style = 0,
- const wxValidator& validator = wxDefaultValidator,
- const wxString& name = wxComboBoxNameStr);
- //@}
- /**
- Returns index to the widest item in the list.
- */
- virtual int GetWidestItem();
- /**
- Returns width of the widest item in the list.
- */
- virtual int GetWidestItemWidth();
- protected:
- /**
- This method is used to draw the items background and, maybe, a border around it.
- The base class version implements a reasonable default behaviour which consists
- in drawing the selected item with the standard background colour and drawing a
- border around the item if it is either selected or current.
- @remarks flags has the same meaning as with OnDrawItem().
- */
- virtual void OnDrawBackground(wxDC& dc, const wxRect& rect, int item,
- int flags) const;
- /**
- The derived class may implement this function to actually draw the item
- with the given index on the provided DC.
- If function is not implemented, the item text is simply drawn, as if the control
- was a normal combobox.
- @param dc
- The device context to use for drawing
- @param rect
- The bounding rectangle for the item being drawn (DC clipping
- region is set to this rectangle before calling this function)
- @param item
- The index of the item to be drawn
- @param flags
- A combination of the ::wxOwnerDrawnComboBoxPaintingFlags enumeration values.
- */
- virtual void OnDrawItem(wxDC& dc, const wxRect& rect, int item,
- int flags) const;
- /**
- The derived class may implement this method to return the height of the
- specified item (in pixels).
- The default implementation returns text height, as if this control was
- a normal combobox.
- */
- virtual wxCoord OnMeasureItem(size_t item) const;
- /**
- The derived class may implement this method to return the width of the
- specified item (in pixels). If -1 is returned, then the item text width
- is used.
- The default implementation returns -1.
- */
- virtual wxCoord OnMeasureItemWidth(size_t item) const;
- };
|