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. Java:ListViewは複数の選択モードを有効にするにはどうすればよいですか?
- 3. DataGridViewで選択する機能を無効にするにはどうすればよいですか?
- 4. IDで複数選択するにはどうすればいいですか?
- 5. DataGrid WPFで列選択を無効にするにはどうすればよいですか?
- 6. フォーム選択タイプで特定のアイテムを無効にするにはどうすればよいですか?
- 7. HTML選択の青い背景を無効にするにはどうすればよいですか?
- 8. WPF XAML:DataGridで複数選択を無効にするにはどうすればよいですか?このようなデータグリッドで
- 9. PopoverでTableView選択でアニメーションを無効にするにはどうすればいいですか?
- 10. 選択したdatatable jqueryを無効にするにはどうすればよいですか?
- 11. 抽象クラスの選択肢を無効にするにはどうすればよいですか?
- 12. tablayoutのデフォルト選択を無効にするにはどうすればよいですか?
- 13. DropDownList ASP.NET MVCの選択を無効にするにはどうすればよいですか?
- 14. textViewで部品の選択を無効にするにはどうすればいいですか?
- 15. NSURLSessionでソケットごとに複数のリクエストを無効にするにはどうすればよいですか?
- 16. 複数選択リストの選択したアイテムをコントローラに戻すにはどうすればいいですか?
- 17. 値が重複しないテーブルを複数選択するにはどうすればよいですか?
- 18. 複数選択から重複値を削除するにはどうすればよいですか?
- 19. Kakouneで上向きに複数の行を選択するにはどうすればよいですか?
- 20. SQLで複数のフィールドに対してmaxを選択するにはどうすればよいですか?
- 21. パラメータに基づいて複数の値を選択するにはどうすればよいですか?
- 22. バックエンドコード(VB)からリストボックスで複数項目を選択するにはどうすればよいですか?
- 23. LINQで複数のテーブルを選択するにはどうすればよいですか? SQLで
- 24. 異なる条件で複数の列を選択するにはどうすればよいですか?
- 25. 変更された1つの選択ボックスに基づいて他の選択ボックスを無効にするにはどうすればよいですか?
- 26. Xpathで複数のクラスを持つ要素を選択するにはどうすればよいですか?
- 27. 複数の項目を含むクエリでグループを選択するにはどうすればよいですか?
- 28. Androidで5つのストアを選択した後に選択オプションを無効にするにはどうすればよいですか?
- 29. mapStateToPropsの複数のReduxスライスから適切に選択するにはどうすればよいですか?
- 30. クラス図で複数の選択肢を指定するにはどうすればよいですか?