Metasequoia BBS

| 新規投稿 | 通常表示 | ツリー表示 |
状態
タグ
キーワード
[9396] MQWidget関連のクラスで2点ほどご確認いただきたい所があります / まじかる☆しげぽん
[不具合報告,SDK v4.8.0] 返信
以下の、ウィジェットクラスで親クラスのMQWidgetBaseのAddLeftDownEventイベントなどが動作しない。
(他のイベントを全て確認しているわけではないですが同様のイベントが正常に動作するかご確認お願いしたいです)

MQSpinBoxクラス
MQDoubleSpinBoxクラス

MQLabel、MQEdit、MQListBox、などではAddLeftDownEventで左クリックのイベントが検出できますがRev4.00で追加された上記のウィジエットではイベントが発生しないため左クリックによるイベントが実行されないようでした。

MQDoubleSpinBoxのAddChangedEventで以下の説明がある状態でイベントが発生しない。

>Enterキーが押されたりTabキーやマウス操作によって他のウィジェットへフォーカスが移動したときにAddChangedEvent()が発生します。

MQDoubleSpinBoxを複数作成してAddChangedEventを設定して、スピンボックス内の数値が変更された際はイベントが発生されますが、上記で書かれているようなマウスで別のSpinBox項目にフォーカスが移動した際はイベントが発生しません。

具体的には、別の項目にフォーカスした際にイベントを実行したいのですが現在試したところ上記でイベントが発生しない、その上でクリック処理のイベントもSpinBoxに設定しても発生しないためSpinBoxでは数値の変動でしかイベントが発生しない状況です。

上記2点、ご確認いただければと思います。
2022-04-30 07:42
[9397] Re: MQWidget関連のクラスで2点ほどご確認いただきたい所があります / まじかる☆しげぽん
簡単なコードはこのような感じです。
スピンボックスウィジェットを生成して、AddChangedEventでフォーカス移動を検知してOnChangeFocusを実行させたいという感じです。数値が変更されたらイベントが発生しますが、上記説明条件ではイベントが発生しません。
認識、記述が間違っていましたらご指摘いただければと思います。

//ヘッダー
BOOL OnChangeFocus(MQWidgetBase* sender, MQDocument doc);

//ソース
//スピンボックスウィジット生成
MQDoubleSpinBox* test_A = CreateDoubleSpinBox(this);
test_A->AddChangedEvent(this, &Dialog::OnChangeFocus);
MQDoubleSpinBox* test_B = CreateDoubleSpinBox(this);
test_B->AddChangedEvent(this, &Dialog::OnChangeFocus);
MQDoubleSpinBox* test_C = CreateDoubleSpinBox(this);
test_C->AddChangedEvent(this, &Dialog::OnChangeFocus);
MQDoubleSpinBox* test_D = CreateDoubleSpinBox(this);
test_D->AddChangedEvent(this, &Dialog::OnChangeFocus);

//実行処理
BOOL Dialog::OnChangeFocus(MQWidgetBase* sender, MQDocument doc)
{
    DebugLogEdit->SetText(L"フォーカス変更");
    return FALSE;
}
2022-04-30 08:12