1

コメントのため、次のコードを追加しました

(BasicPanel内)

Connect(CTRL_ONE, wxEVT_KILL_FOCUS, (wxObjectEventFunction)&BasicPanel::OnKillFocus);
Connect(CTRL_TWO,wxEVT_KILL_FOCUS, (wxObjectEventFunction)&BasicPanel::OnKillFocus);
Connect(CTRL_THREE, wxEVT_KILL_FOCUS, (wxObjectEventFunction)&BasicPanel::OnKillFocus);
Connect(CTRL_FOUR, wxEVT_KILL_FOCUS, (wxObjectEventFunction)&BasicPanel::OnKillFocus);
Connect(CTRL_FIVE, wxEVT_KILL_FOCUS, (wxObjectEventFunction)&BasicPanel::OnKillFocus);

(列挙型)

    CTRL_NAME = wxID_HIGHEST + 5, // 6004
    CTRL_ADDRESS = wxID_HIGHEST + 6, // 6005
    CTRL_PHONENUMBER = wxID_HIGHEST + 7, // 6006
    CTRL_SS = wxID_HIGHEST + 8, // 6007
    CTRL_EMPNUMBER = wxID_HIGHEST + 9 // 6008

(OnKillFocus関数-宣言は提案どおりに含まれています)

void BasicPanel::OnKillFocus(wxFocusEvent& event) {
    switch (event.GetId()) {
        case 6004:
            ...
            break;
                ...    ...     ...
    }

ユーザーが使用しているテキストボックスにフォーカスを変更しても、コードに追加されたこれらはすべて何もしません...


Q1:wxWidgets(C ++)を使用していますが、ヘルプが見つからないという問題が発生しました。私はいくつかのwxTextCtrlボックスを作成しましたが、ユーザーが「フォーカスを殺した」ときに、プログラムがそれらのボックスの簡単な計算を更新するようにしたいと思います。wxWidgetsのWebページでこのテーマに関するドキュメントを見つけることができず、グーグルで検索するとwxPythonしか表示されませんでした。私が見つけた2つのイベントは、次のとおりEVT_COMMAND_KILL_FOCUS - EVT_KILL_FOCUSです。どちらの場合も、スニペットを見つけることができませんでした。誰かが私に短い例を教えてくれますか、または役立つページに私を導くことができますか?

wxTextCtrlQ2:8つのボックス のそれぞれで強制終了されるフォーカスを処理するイベントを作成する必要がありますか?別のイベントを作成する必要がある場合:各イベントを互いに区別するにはどうすればよいですか?ボックスごとに新しいwxIDを作成する必要があることはわかってwxTextCtrlいますが、正しいものをトリガーするにはどうすればよいですか?

class BasicPanel : public wxPanel { ...     
    wxTextCtrl* one;
    wxTextCtrl* two;
    wxTextCtrl* three;
    wxTextCtrl* four; ... }
4

1 に答える 1

3

さて、最初に、BasicPanelクラスに配置するコードは次のとおりです。

void OnKillFocus(wxFocusEvent& event);

BasicPanel次に、コンストラクターの最後に以下を追加します。

Connect(ID_TEXTCTRL,
        wxEVT_KILL_FOCUS ,
        (wxObjectEventFunction)&BasicPanel::OnKillFocus);

テキストコントロールごとに上記のコードを繰り返し、ID_TEXTCTRLコントロールの実際のIDに置き換える必要があります。

次に、コントロールの1つがフォーカスを失うたびに、以下のコードが呼び出されます。

void BasicPanel::OnKillFocus(wxFocusEvent& event)
{
    // code goes here...
}

内でイベントを生成したコントロールのIDを判別するにはOnKillFocus、以下を使用できます。

event.GetId()
于 2010-04-21T03:28:10.947 に答える