Improving the Functionality of Comboboxes in wxGrid

The grid in wxWidgets allows you to insert a combobox in a cell, which is a feature that very few other toolkits offer. However, the default behaviour is somewhat lacking.

First of all, there is no visual indication of which cell has a combobox until the cell has focus. Then, when you click on a cell to edit it, you have to click three times: once to give the cell focus, once to activate the editor, and a third to actually open the combobox. That's very labor intensive for the poor user if you have several dozen cells to edit.

So, I wrote some classes to rectify these problems:

wxGridCellChoiceRenderer Displays the combobox buttons when not active
EzGrid Activates cells in the grid with just one click
wxFastComboEditor Opens the combobox immediately if you clicked on the button

To use this code, include the attached files in your project. Then, set the cell with the combobox something like this:

grid->SetCellRenderer(1, 1, new wxGridCellChoiceRenderer);
wxStringstrChoices[3] = {"one", "two", "three"};;
grid->SetCellEditor(1, 1, new wxFastComboEditor(3, strChoices, TRUE));
Notes:

ExGrid will put all cells, not just combobox cells, into edit mode with just one click. Normally, this is desirable because you can edit the cells quicker.

The code works under both Windows and Linux (wxGTK), except for the code that opens the combobox automatically. I'm not very experienced in GTK and I haven yet figured out how to send a left mouse click message to a control.



Downloads

Comments

  • There are no comments yet. Be the first to comment!

Leave a Comment
  • Your email address will not be published. All fields are required.

Top White Papers and Webcasts

  • Live Event Date: September 10, 2014 @ 11:00 a.m. ET / 8:00 a.m. PT Modern mobile applications connect systems-of-engagement (mobile apps) with systems-of-record (traditional IT) to deliver new and innovative business value. But the lifecycle for development of mobile apps is also new and different. Emerging trends in mobile development call for faster delivery of incremental features, coupled with feedback from the users of the app "in the wild". This loop of continuous delivery and continuous feedback is …

  • The explosion in mobile devices and applications has generated a great deal of interest in APIs. Today's businesses are under increased pressure to make it easy to build apps, supply tools to help developers work more quickly, and deploy operational analytics so they can track users, developers, application performance, and more. Apigee Edge provides comprehensive API delivery tools and both operational and business-level analytics in an integrated platform. It is available as on-premise software or through …

Most Popular Programming Stories

More for Developers

Latest Developer Headlines

RSS Feeds