wxGridで1行しか選択しません。 wxGridで複数選択を無効にすることはできますか? 私はSetSelectionMode
を試しました。それは私が行だけを選択するのに役立ちます。しかし、私は単列選択には使用できません。wxGridで複数選択を無効にするにはどうすればよいですか?
3
A
答えて
0
wxEVT_GRID_SELECT_CELLイベントをキャプチャします。
選択された行の配列を取得するには、GetSelectedRows()を使用します。
選択される2つ以上の行がある場合 -
- 使用SelectRow()は配列の最初の行、たとえば、以外のすべての選択を解除します。
0
wx.EVT_MOTION(self.grid.GetGridWindow(), self.OnMouseMotion)
wx.EVT_LEFT_DOWN(self.grid.GetGridWindow(), self.OnMouseLeftDown)
wx.EVT_KEY_DOWN(self.grid.GetGridWindow(), self.OnKeyPress)
def OnMouseMotion(self,event):
if event.Dragging():
return
else:
event.Skip()
def OnMouseLeftDown(self,event):
if event.AltDown() or event.ShiftDown() or event.ControlDown():
return
else:
event.Skip()
def OnKeyPress(self,event):
if event.GetKeyCode() in [wx.WXK_SHIFT,wx.WXK_ALT,wx.WXK_CONTROL,wx.WXK_UP,wx.WXK_DOWN,]:
return
else:
event.Skip()
0
私はこの質問はかなり古いですが、インターネットでは、この引数にそこにそんなにいないことを見てきました。
インターネットに投稿された解決策の多くは、完了していないか、いくつかの欠点があります。 私の解決方法は次のとおりです。私は、次の方法
void ReportGrid::DisableRangeHandler (wxGridRangeSelectEvent &ev)
{
if(ev.Selecting() && (ev.GetTopRow() != ev.GetBottomRow())) {
ev.StopPropagation();
ev.Veto();
}
}
void ReportGrid::DisableRangeSelectCellHandler (wxGridEvent &ev)
{
SelectRow(ev.GetRow());
}
void ReportGrid::DisableCtrlMaiusHandler (wxGridEvent &ev)
{
if (ev.ControlDown() || ev.ShiftDown()){
ev.Veto();
} else {
ev.Skip();
}
}
void ReportGrid::DisableDraggingHandler (wxMouseEvent &ev)
{
if (ev.Dragging()){
ev.Skip(false);
}
}
void ReportGrid::SingleSelectionMode(bool enabled)
{
if (_singleSelection == enabled){
return;
}
if (enabled){
Bind(wxEVT_GRID_RANGE_SELECT, &ReportGrid::DisableRangeHandler, this);
Bind(wxEVT_GRID_SELECT_CELL, &ReportGrid::DisableRangeSelectCellHandler, this);
Bind(wxEVT_GRID_CELL_LEFT_CLICK, &ReportGrid::DisableCtrlMaiusHandler, this);
GetGridWindow()->Bind(wxEVT_MOTION, &ReportGrid::DisableDraggingHandler, this);
_singleSelection = true;
} else {
Unbind(wxEVT_GRID_RANGE_SELECT, &ReportGrid::DisableRangeHandler, this);
Unbind(wxEVT_GRID_SELECT_CELL, &ReportGrid::DisableRangeSelectCellHandler, this);
Unbind(wxEVT_GRID_CELL_LEFT_CLICK, &ReportGrid::DisableCtrlMaiusHandler, this);
GetGridWindow()->Unbind(wxEVT_MOTION, &ReportGrid::DisableDraggingHandler, this);
_singleSelection = false;
}
}
これは私がwxWidgetsの上の単一の行選択を持つようにしてきた最も近いと、wxGridを継承したクラスをしました。
関連する問題
- 1. UITableViewで複数選択を有効にするにはどうすればよいですか?
- 2. DataGridViewで選択する機能を無効にするにはどうすればよいですか?
- 3. IDで複数選択するにはどうすればいいですか?
- 4. フォーム選択タイプで特定のアイテムを無効にするにはどうすればよいですか?
- 5. DataGrid WPFで列選択を無効にするにはどうすればよいですか?
- 6. WPF XAML:DataGridで複数選択を無効にするにはどうすればよいですか?このようなデータグリッドで
- 7. 複数選択リストの選択したアイテムをコントローラに戻すにはどうすればいいですか?
- 8. SQLで複数のフィールドに対してmaxを選択するにはどうすればよいですか?
- 9. パラメータに基づいて複数の値を選択するにはどうすればよいですか?
- 10. LINQで複数のテーブルを選択するにはどうすればよいですか? SQLで
- 11. 異なる条件で複数の列を選択するにはどうすればよいですか?
- 12. ラジオグループ内で複数選択を無効にする方法extjs
- 13. 複数の項目を含むクエリでグループを選択するにはどうすればよいですか?
- 14. Xpathで複数のクラスを持つ要素を選択するにはどうすればよいですか?
- 15. PHPで複数の選択フィールドを保存するにはどうすればよいですか?
- 16. 複数の値の列で値を選択するにはどうすればよいですか?
- 17. jQueryで複数選択のoptgroupを取得するにはどうすればよいですか?
- 18. Androidのレルム - IDリスト(@PrimaryKey)で複数のオブジェクトを選択するにはどうすればよいですか?
- 19. MacのNetBeans UIビルダーで複数のコンポーネントを選択するにはどうすればよいですか?
- 20. DataGridで複数のアイテムを選択するにはどうすればよいですか?
- 21. 複数のテキスト選択をブラウザでサポートするにはどうすればよいですか?
- 22. selectAllで複数のセレクタを選択するにはどうすればよいですか?
- 23. jQuery StickyFormsで複数の選択ボックスの値を再ロードするにはどうすればよいですか?
- 24. Androidのサブメニューで複数のチェックボックスを選択するにはどうすればよいですか?
- 25. 同じ列で複数の値を選択するにはどうすればよいですか?
- 26. 選択ボックスに複数の値を設定するにはどうすればよいですか?
- 27. アップロードするファイルを複数選択するにはどうすればよいですか?
- 28. ドロップダウンから複数の値を選択するにはどうすればよいですか?
- 29. mysqlクエリの各グループから複数のアイテムを選択するにはどうすればよいですか?
- 30. スクロールビューを無効にするにはどうすればよいですか?