ポップアップのつくり方の質問をもらったのでメモ。簡単なポップアップのつくり方を紹介。
グループよりコンテナがおすすめ
ポップアップ内のコントロールをまとめるとき、グループ化する方法とコンテナを使う方法があって、個人的にはコンテナがおすすめ。
↓グループ化で作成したポップアップ。

↓コンテナで作成したポップアップ、こちらが個人的におすすめ。
理由はこんな感じで絶対的な理由があるわけではないので、どちらで構築するかは好みで。
- Visibleの切り替えがコンテナのみですむ
- ポップアップ内のコントロールを相対座標で指定できる
- ポップアップ内のコントロールが増えてきたとき、コントロール整理が楽
- 画面上でグループ内のコントロールを選択しようとすると、グループが選択されてしまう
- 個人的にコンテナの方が好き
この記事ではコンテナを使用して、シンプルなポップアップを作る方法を紹介。
構築
見た目の構築
まずは画面にコンテナを追加し、


XとYを0に、WidthとHeightを親(画面)に合わせる。


そしてFillにRGBAで黒の透過を指定。透過の度合い(例は0.6)は好みで。


続いて四角形を追加し、


Fillを白にし、高さと幅は任意、XとYは画面中央に配置されるよう式を入力。


// 横方向に画面中央に配置される式 (Parent.Width - Self.Width) / 2 // 縦方向に画面中央に配置される式 (Parent.Height - Self.Height) / 2
ボタンを追加し、こちらも高さと幅は任意で、Xは画面中央に配置されるよう式を入力、


Yは先ほど追加した四角形から任意の幅(例では30)内側に配置されるよう設定する。


// X (Parent.Width - Self.Width) / 2 // Y 【四角形の名前】.Y + 【四角形の名前】.Height - Self.Height - 30 // サンプルの式 Rectangle.Y + Rectangle.Height - Self.Height - 30
最後にラベルを追加し、X, Y, Height, Widthのすべてを四角形に合わせ、文字を中央寄せにして、パディングで位置を調整する(例では中央よりちょっと上)。


ボタンをラベルより前面に持ってきて、見た目の構築は完了。


動作の構築
まずはOKボタンに以下の式を入力し、ボタン押下時に変数(例では「showPopup」)にfalseを代入する。


UpdateContext({showPopup:false});
そしたらコンテナのVisibleに変数「showPopup」を入力。


ポップアップを表示するコントロール(例では「ポップアップ表示」ボタン)の押下処理(OnSelect)などで、変数「showPopup」にtrueを代入する。


以上で動作の構築も完了。
動作確認
ポップアップ表示ボタンを押すと、


ポップアップが表示され、OKボタンを押すと、


ポップアップは消える。


おまけ1:×ボタン(閉じるボタン)を追加したい場合
ポップアップコンテナの中にアイコン「キャンセル」を追加し、


Xを四角形の内側に配置されるよう設定し、


Yも四角形の内側に配置されるよう設定(例ではX、Yともに15内側)。


// X 【四角形の名前】.X + 【四角形の名前】.Width - Self.Width - 15 // Y 【四角形の名前】.Y + 15 // 例のXとY Rectangle.X + Rectangle.Width - Self.Width - 15 Rectangle.Y + 15
OnSelectで変数「showPopup」にfalseを代入するよう式を入力し、完成。


おまけ2:領域外をクリックしたときにポップアップを閉じたい場合
コンテナに四角形を挿入し、


最背面に移動。


XとYに0を設定し、HeightとWidthは親(コンテナ)を参照するよう設定。


色を透明にし、


OnSelectで変数「showPopup」にfalseを代入するよう式を入力し、完成。


ポップアップ表示中に領域外をクリックすると、


ポップアップは消える。


おまけ3:追加したコントロールにわかりやすい名前を付ける
最後に追加したコントロールにわかりやすい名前を付けると、他の人に引き継いだときに優しいかも。


コメント