1. fixed bug with the index of the last column in EVT_COL_CLICK being shifted

by 1 (always)
2. added a menu item to toggle single/multiple selection to the sample


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@5954 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2000-02-10 18:12:44 +00:00
parent f75fc92e11
commit 7b848b0db2
3 changed files with 35 additions and 4 deletions

View File

@@ -52,6 +52,7 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame)
EVT_MENU(LIST_SORT, MyFrame::OnSort)
EVT_MENU(LIST_SET_FG_COL, MyFrame::OnSetFgColour)
EVT_MENU(LIST_SET_BG_COL, MyFrame::OnSetBgColour)
EVT_MENU(LIST_TOGGLE_MULTI_SEL, MyFrame::OnToggleMultiSel)
END_EVENT_TABLE()
BEGIN_EVENT_TABLE(MyListCtrl, wxListCtrl)
@@ -156,6 +157,9 @@ bool MyApp::OnInit()
menuList->Append(LIST_SORT, "&Sort\tCtrl-S");
menuList->AppendSeparator();
menuList->Append(LIST_DELETE_ALL, "Delete &all items");
menuList->AppendSeparator();
menuList->Append(LIST_TOGGLE_MULTI_SEL, "&Multiple selection\tCtrl-M",
"Toggle multiple selection", TRUE);
wxMenu *menuCol = new wxMenu;
menuCol->Append(LIST_SET_FG_COL, "&Foreground colour...");
@@ -168,9 +172,15 @@ bool MyApp::OnInit()
menubar->Append(menuCol, "&Colour");
frame->SetMenuBar(menubar);
frame->m_listCtrl = new MyListCtrl(frame, LIST_CTRL, wxPoint(0, 0), wxSize(400, 200),
wxLC_LIST|wxSUNKEN_BORDER|wxLC_EDIT_LABELS );
// wxLC_LIST|wxLC_USER_TEXT|wxSUNKEN_BORDER); // wxLC_USER_TEXT requires app to supply all text on demand
frame->m_listCtrl = new MyListCtrl(frame, LIST_CTRL,
wxPoint(0, 0), wxSize(400, 200),
wxLC_LIST |
wxSUNKEN_BORDER |
wxLC_EDIT_LABELS |
// wxLC_USER_TEXT requires app to supply all text on demand
// wxLC_USER_TEXT |
wxLC_SINGLE_SEL
);
frame->m_logWindow = new wxTextCtrl(frame, -1, "", wxPoint(0, 0), wxSize(400, 200), wxTE_MULTILINE|wxSUNKEN_BORDER);
@@ -408,6 +418,25 @@ void MyFrame::OnSort(wxCommandEvent& WXUNUSED(event))
sw.Time()));
}
void MyFrame::OnToggleMultiSel(wxCommandEvent& WXUNUSED(event))
{
m_logWindow->WriteText("Current selection mode: ");
long flags = m_listCtrl->GetWindowStyleFlag();
if ( flags & wxLC_SINGLE_SEL )
{
m_listCtrl->SetWindowStyleFlag(flags & ~wxLC_SINGLE_SEL);
m_logWindow->WriteText("multiple");
}
else
{
m_listCtrl->SetWindowStyleFlag(flags | wxLC_SINGLE_SEL);
m_logWindow->WriteText("single");
}
m_logWindow->WriteText("\nRecreate the control now\n");
}
void MyFrame::OnSetFgColour(wxCommandEvent& WXUNUSED(event))
{
m_listCtrl->SetForegroundColour(wxGetColourFromUser(this));

View File

@@ -72,6 +72,7 @@ public:
void OnSort(wxCommandEvent& event);
void OnSetFgColour(wxCommandEvent& event);
void OnSetBgColour(wxCommandEvent& event);
void OnToggleMultiSel(wxCommandEvent& event);
void BusyOn(wxCommandEvent& event);
void BusyOff(wxCommandEvent& event);
@@ -99,6 +100,7 @@ enum
LIST_SORT,
LIST_SET_FG_COL,
LIST_SET_BG_COL,
LIST_TOGGLE_MULTI_SEL,
LIST_CTRL = 1000
};

View File

@@ -952,7 +952,7 @@ void wxListHeaderWindow::OnMouse( wxMouseEvent &event )
m_minX = 0;
bool hit_border = FALSE;
int xpos = 0;
for (int j = 0; j < m_owner->GetColumnCount()-1; j++)
for (int j = 0; j < m_owner->GetColumnCount(); j++)
{
xpos += m_owner->GetColumnWidth( j );
m_column = j;