LUIS_PAN
(LUIS_PAN)
1
メインの画面にメイン用のウィジェットブループリント(Aとします)を表示させています。
メイン用のウィジェットブループリント(Aとします)にcheckboxを配置しており、checkboxにチェックを入れると別のウィジェットブループリント(Bとします)が表示されるようにしています。
別のウィジェットブループリント(Bとします)には、閉じるボタンを作成し、そのボタンを押すと、Bが閉じられて(非表示になり)
メイン用のウィジェットブループリント(Aとします)に戻るというようにしています。
ここで質問なのですが、
メイン用のウィジェットブループリント(Aとします)に戻った際に、checkboxが自動で外れるようにしたいのですが、どのようにすれば可能でしょうか?
チェックを入れたときにウィジェットBが作成されるわけではなく、表示・非表示を切り替えたいだけですね。
いくつか方法はあるかもしれませんが、下記が簡単かなと思います。
1.ウィジェットBを、ウィジェットA上に配置しておきます。
2.ウィジェットBのBPにて、イベントディスパッチャー「OnClosedWidgetB(名前は任意)」を作成し、閉じるボタンを押したイベントでこれを呼び出すようにします。
3.ウィジェットBはウィジェットAに配置されているので、ウィジェットBのイベントディスパッチャーを受け取ることができます。そのため、ウィジェットAのデザイナーグラフにてウィジェットBを選択して詳細パネルから、「OnClosedWidgetB」イベントを追加できるはずです。
4.あとはそのイベントにて「ウィジェットBを非表示にする処理」と「該当のCheckBoxの状態を変更するSet Checked State」を呼び出してチェックが外れるようにすれば完了です。
細かいところでわからなければ、再度回答いたします。
LUIS_PAN
(LUIS_PAN)
3
ご回答いただきまして有難うございます。
Body seems unclear, is it a complete sentence?と表示されて
返信の文章が入力できず細切れになってしまいことをお許しください
LUIS_PAN
(LUIS_PAN)
4
教えていただきました内容に沿って一度自分でやってみたいと思います。
不明なことがありましたら再度質問させていただきたいと思います。
LUIS_PAN
(LUIS_PAN)
5
非表示になると最初に記載させていただいておりますところですが、すみません、処理としては、RemovefromParentでやっております。ですので、非表示という言葉が伝わっていないかったことを考え記載させていただきました。
念のために、質問時に作成していたデータの処理などの資料を添付させていただきます。
質問当初に作成していたデータの処理 .pdf (489.6 KB)
詳細ありがとうございます。
私の申し上げた表示・非表示にするか、LUIS_PANさんのように作成と削除にするのかはUIの設計にも依りますのでご参考までに作成と削除の場合の方法も回答しておきますね。
1.ウィジェットBに、ウィジェットAのクラスオブジェクトを格納するための変数を作成します。
このとき、変数の詳細パネルから「インスタンス編集可能」および「スポーン時に公開」の2つにチェックを入れておきます(画像1)。
※「インスタンス編集可能」にチェックがついていないと「スポーン時に公開」にチェックできません。
※ウィジェットA型の変数にしないと、あとでウィジェットAのチェックボックスを操作できません(UserWidget型は × )。
2.ウィジェットAのチェックボックスにてチェックが付いたときにウィジェットBを作成します。このとき、手順1でウィジェットBで作成した変数「WidgetA」が公開されて引数を与えられるようになっておりますので、self(ウィジェットA自身の参照)を与えます(画像2)。
これによってウィジェットB作成と同時に、ウィジェットBが持つウィジェットA型の変数にウィジェットAの参照が与えられます(簡単に言えばウィジェットBからウィジェットAを操作できるようになります)。
3.あとはウィジェットBで閉じるボタンを押した際に、ウィジェットAのチェックボックスの状態を変える処理を作成し、その”後に”ウィジェットBを削除するようにすれば終わりです。
画像1(ウィジェットBで作成した変数の設定)

画像2(ウィジェットAのグラフ)
画像3(ウィジェットBのグラフ)
LUIS_PAN
(LUIS_PAN)
7
ご回答いただきまして有難うございます。
表示・非表示の意味合い間違っておりすみませんでした。
作成と削除の方も詳細に説明いただきまして有難うございます。
いただいた回答をもとに、再度自分でもやってみたいと思います。
先日ご回答いただいた、表示、非表示での対応の方を、いただいた回答を元に作成してみました。
挙動自体は問題なさそうにできましたが、処理が問題ないかということもあり、こちらに作成した処理を添付させていただきます。
もし可能でしたら処理に問題がないか見ていただけたらと思います。
実際にやってみて今ひとつ良く分からなかったところは、下記のような感じです。
①イベントディスパッチャの処理がまだ理解しきれていない及び呼び出し(バインドが検索に出てこなかった)
②バインドしたものの左のピンを何と接続すべきなのか、(とりあえずイベントConstructに接続してたまたま出来上がったようになっています)
宜しくお願い致します。
表示、非表示での処理を作成したもの.pdf (658.1 KB)
私が言った内容の処理はほぼ正しく組まれています。
ただし、懸念されているようにイベントディスパッチャーの処理について一点。
PDFの組み方(On Constructでバインド)でも正しく動作します。
むしろ、BPアクタ同士などのやり取りではその組み方が通常ではあるのですが、、
子ウィジェットが配置されたウィジェットで、子ウィジェットのイベントディスパッチャーを受け取りたい場合は、そのようにしなくてもOKです。
最初の回答時に「検索で出てくる」と申し上げましたが誤っておりました。申し訳ありません。おっしゃる通り検索には出てきませんので、デザイナー画面にてWidgetBを選択した状態で詳細パネルを下にスクロールしてください。
おそらく、ボタンのクリックイベントを実装するときと同じように、WidgetBで作成したイベントを実装できるはずです。
LUIS_PAN
(LUIS_PAN)
9
教えていただきました、作成と削除の方もいただいた回答をもとにやってみました。
挙動は問題ありませんでした。
1つ質問がありますが、よろしいでしょうか?
添付いただいておりました、ウィジェットAのグラフのところで、ブランチを入れていらっしゃいますが、これは入れておいた方が良いのでしょうか?
実は、私の方で、最初ブランチは入れず添付画像のように作成しプレイしてみると、挙動は問題なさそうでした。
ブランチを入れていない場合、何か問題が発生する可能性がありますでしょうか?
すみません、ブランチを入れるのはなぜなのかと思いまして。
宜しくお願いいたします。
LUIS_PAN
(LUIS_PAN)
10
補足説明いただきまして有難うございます。
教えていただきました、別の組み方もぜひ参考にさせていただきたいと思います。
有難うございます。
ご質問の件について、
チェックボックスをオンオフどちらも手動で切り替える場合はブランチを使うのが通常ですが、今回のケースの場合はあまり意味を成しませんね。
好みの問題でつけましたが、混乱させてしまい申し訳ありません。
もし疑問がすべて解決したようであれば、解決状態にしてスレッドをクローズできると思いますのでご確認をよろしくお願いいたします。
LUIS_PAN
(LUIS_PAN)
12
ご回答いただきまして有り難うございます。
次回からの参考にさせていただきます。
何度も質問に回答いただきまして、本当に有り難うございました。