2011-01-26 4 views
1

wxWidgets 2.9.1 documentationは、静的ボックスを作成する新しい方法を推奨します。静的ボックス内のすべてのコントロールをその子として作成する必要があります。wxWidgets 2.9.1 - 複数のwxStaticBoxを使用する場合のキーボードナビゲーションの問題

しかし、ダイアログ/パネルに複数の静的ボックスがある場合、キーボードのナビゲーションに問題があります。異なる静的ボックスに配置されたコントロール間でカーソルを移動する方法はありません。メソッドwxWindow :: MoveAfterInTabOrder()とwxWindow :: MoveBeforeInTabOrderは、同じ親ウィンドウの兄弟でしか動作しないため、ここでは役に立たない。

このサンプルコードでは、2つの静的ボックス(それぞれが2つの編集コントロールの親である)を持つダイアログを作成します。編集コントロール#2からコントロール#3を編集するためにタブキーでナビゲートできるようにするにはどうすればよいですか?

void CreateTestDialog(wxWindow* parent) 
{ 
    wxWindowID id = 10010; 
    long style = wxCAPTION|wxRESIZE_BORDER|wxSYSTEM_MENU|wxCLOSE_BOX|wxTAB_TRAVERSAL; 
    wxDialog dlg; 
    dlg.SetExtraStyle(wxWS_EX_BLOCK_EVENTS); 
    if (dlg.Create(parent, id, wxT("Tab Order Test"), wxDefaultPosition, wxDefaultSize, style)) 
    { 
     wxBoxSizer* sizer1 = new wxBoxSizer(wxVERTICAL); 
     dlg.SetSizer(sizer1); 

     wxStaticBox* staticbox1 = new wxStaticBox(&dlg, wxID_ANY, _("Static1"), wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL); 
     wxStaticBoxSizer* sizer2 = new wxStaticBoxSizer(staticbox1, wxVERTICAL); 
     sizer1->Add(sizer2, 0, wxGROW|wxALL, 5); 

     wxTextCtrl* m_ctl_text1 = new wxTextCtrl(staticbox1, 10011); 
     sizer2->Add(m_ctl_text1, 0, wxGROW|wxALL, 5); 

     wxTextCtrl* m_ctl_text2 = new wxTextCtrl(staticbox1, 10012); 
     sizer2->Add(m_ctl_text2, 0, wxGROW|wxALL, 5); 

     wxStaticBox* staticbox2 = new wxStaticBox(&dlg, wxID_ANY, _("Static2"), wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL); 
     wxStaticBoxSizer* sizer3 = new wxStaticBoxSizer(staticbox2, wxVERTICAL); 
     sizer1->Add(sizer3, 0, wxGROW|wxALL, 5); 

     wxTextCtrl* m_ctl_text3 = new wxTextCtrl(staticbox2, 10013); 
     sizer3->Add(m_ctl_text3, 0, wxGROW|wxALL, 5); 

     wxTextCtrl* m_ctl_text4 = new wxTextCtrl(staticbox2, 10014); 
     sizer3->Add(m_ctl_text4, 0, wxGROW|wxALL, 5); 

     dlg.ShowModal(); 
    } 
} 

(静的ボックスの兄弟として)コントロールを作成する従来の方法を使用するよう助けてください。スタティックボックスを作成する新しい方法は、厄介な問題を解決します。それは私が解決しようとしている実際の問題です。

おかげ

Wacek

答えて

1

問題は最終的にwxWidgetsの2.9.5のプレリリースバージョンで解決されました。

詳しい情報は、いかなる他の回答がなかったので、私は、自分の質問に答えなかった対応ticket page

で見つけることができます。たぶんこれは将来他の誰かにとって役に立ちます。