ロールアウトコントロールをフレキシブルに配置するためのフレームワーク。
-
通常はサイズが変更できないコントロールもサイズ変更が可能。
-
23種のロールアウトコントロールに対応。 (
comboBox
、subRollout
、timer
は非対応)
-
(任意)imaoki/StartupLoader 導入済みの場合はインストール/アンインストールでスタートアップスクリプトの登録/解除が行われる。 未使用の場合はスクリプトの評価のみ行われる。
3ds Max 2024
-
依存スクリプトは予めインストールしておく。
-
install.ms
を実行する。
uninstall.ms
を実行する。
-
依存スクリプトは予めインストールしておく。
-
Distribution\FlexUI.min.ms
を実行する。
::flexUI.Uninstall()
-
Widget(
Example\Widget\FlexEditTextControlWidget.ms
) -
Layout(
Example\Layout\FlexGridLayout.ms
) -
Calc(
Example\Calc.ms
) -
Explorer(
Example\Explorer.ms
) -
Form(
Example\Form.ms
) -
TabPage(
Example\TabPage.ms
)
-
ウィジェットは全種類が共通のプロパティとメソッドを持つ。
-
既定のサイズ、最小サイズ、およびリサイズの可/不可はロールアウトコントロールの特性に合わせて定数として定義されている。
(
local widget = ::flexUI.CreateWidget Edt
-- 全体の水平方向の位置合わせを設定
widget.SetAlignmentH #Center
-- 全体の垂直方向の位置合わせを設定
widget.SetAlignmentV #Center
-- キャプションと本体との余白ピクセルを設定
widget.SetCaptionMargin 3
-- キャプションの表示位置を設定
widget.SetCaptionPosition #Left
-- キャプションを含まない明示的な高さを設定
widget.SetExplicitH undefined
-- キャプションを含まない明示的な幅を設定
widget.SetExplicitW undefined
-- ロールアウトコントロールの可視性を設定
widget.SetVisibility false
-- ロールアウトコントロールの矩形を設定
widget.SetRect (Box2 0 0 100 100)
)
-
仮想グリッド上にアイテムを配置するレイアウト。
-
グリッドは必要に応じて自動的に拡張される。
(
-- 任意でレイアウトオプションを設定
local layoutOptions = ::flexUI.CreateLayoutOptions()
local gridLayout = ::flexUI.CreateGridLayout options:layoutOptions
-- レイアウトを追加(セルを配置する行、セルを配置する列)
gridLayout.AddLayout vBoxLayout 1 1
-- ウィジェットを追加(セルを配置する行、セルを配置する列、セルが専有する行数、セルが専有する列数)
gridLayout.AddWidget widget 2 3 rowSpan:1 columnSpan:3
-- 行の最小高を設定(対象の列、最小高)
gridLayout.SetRowMinimumHeight 1 10
-- 列の最小幅を設定(対象の列、最小幅)
gridLayout.SetColumnMinimumWidth 2 10
-- 行のストレッチ係数を設定(対象の行、ストレッチ係数)
gridLayout.SetRowStretch 2 2
-- 列のストレッチ係数を設定(対象の列、ストレッチ係数)
gridLayout.SetColumnStretch 3 2
-- 行の固定高を設定(対象の列、固定高)
gridLayout.SetRowFixedLength 1 20
-- 列の固定幅を設定(対象の列、固定幅)
gridLayout.SetColumnFixedLength 1 20
-- セルのアイテムの可視性を設定
gridLayout.SetVisibility false
-- レイアウトの矩形を設定
gridLayout.SetRect (Box2 0 0 100 100)
)
GroupBoxControl
用のレイアウト。
(
-- `GroupBoxControl`ウィジェットが必須
local groupBoxWidget = ::flexUI.CreateWidget Gbx
local groupLayout = ::flexUI.CreateGroupLayout groupBoxWidget
-- セルのアイテムを設定
groupLayout.SetCell widget
-- セルのアイテムの可視性を設定
groupLayout.SetVisibility false
-- レイアウトの矩形を設定
groupLayout.SetRect (Box2 0 0 100 100)
)
- 水平方向にアイテムを配置するレイアウト。
(
-- 任意でレイアウトオプションを設定
local layoutOptions = ::flexUI.CreateLayoutOptions()
local hBoxLayout = ::flexUI.CreateHBoxLayout options:layoutOptions
-- レイアウトを追加
hBoxLayout.AddLayout groupLayout
-- 固定スペースを追加
hBoxLayout.AddSpace 10
-- ストレッチ可能なスペースを追加
hBoxLayout.AddStretch stretch:2
-- ウィジェットを追加
hBoxLayout.AddWidget widget stretch:3
-- 固定幅でレイアウトを追加
hBoxLayout.AddLayout groupLayout fixedLength:20
-- 固定幅でウィジェットを追加
hBoxLayout.AddWidget widget fixedLength:20
-- セルのアイテムの可視性を設定
hBoxLayout.SetVisibility false
-- レイアウトの矩形を設定
hBoxLayout.SetRect (Box2 0 0 100 100)
)
-
垂直方向にアイテムを配置するレイアウト。
-
メソッドは
HBoxLayout
と共通。
(
-- 任意でレイアウトオプションを設定
local layoutOptions = ::flexUI.CreateLayoutOptions()
local vBoxLayout = ::flexUI.CreateVBoxLayout options:layoutOptions
-- レイアウトの矩形を設定
vBoxLayout.SetRect (Box2 0 0 100 100)
)
- 登録されたアイテムの内一つのみを表示するレイアウト。
(
-- 任意でレイアウトオプションを設定
local layoutOptions = ::flexUI.CreateLayoutOptions()
local stackedLayout = ::flexUI.CreateStackedLayout options:layoutOptions
-- レイアウトを追加
stackedLayout.AddLayout layout
-- ウィジェットを追加
stackedLayout.AddWidget widget
-- レイアウトを追加(挿入先インデックスを指定)
stackedLayout.AddLayout layout index:2
-- ウィジェットを追加(挿入先インデックスを指定)
stackedLayout.AddWidget widget index:2
-- 現在表示されているアイテムのインデックスを設定
stackedLayout.SetCurrentIndex 2
-- ロールアウトコントロールの選択と現在のインデックスを同期させる
DdlPage.Selection = stackedLayout.GetCurrentIndex()
-- レイアウトの矩形を設定
stackedLayout.SetRect (Box2 0 0 100 100)
)
-
RolloutFloater
およびSubRollout
には非対応。Resized
イベントの発生するダイアログでのみ使用可能。 -
FlexComboBoxControlWidgetStruct
はdropDownList
にのみ対応。 現状ではdropDownList
との判別ができないため使用頻度の低そうなcomboBox
を非対応とした。 -
curveControl
のサイズ変更には非対応。 -
slider
のorient
パラメータは#Horizontal
にのみ対応。
-
通常はグローバル変数
::flexUI
を通して操作する。 -
詳細は
mxsdoc.FlexUI.ms
を参照。
レイアウト | 説明 | イメージ |
---|---|---|
FlexGridLayoutStruct |
グリッドにアイテムを配置する | |
FlexGroupLayoutStruct |
GroupBoxControl 用のレイアウト |
|
FlexHBoxLayoutStruct |
水平方向にアイテムを配置する | |
FlexVBoxLayoutStruct |
垂直方向にアイテムを配置する | |
FlexStackedLayoutStruct |
登録されたアイテムの内一つのみを表示する |
-
レイアウト各部の余白を設定する。
-
詳細は
mxsdoc.FlexLayoutOptions.ms
を参照。
(
local layoutOptions = ::flexUI.CreateLayoutOptions()
-- セル間の水平方向の余白を設定
layoutOptions.SetMarginH 0
-- セル間の垂直方向の余白を設定
layoutOptions.SetMarginV 0
-- レイアウト外周の下側の余白を設定
layoutOptions.SetPaddingB 0
-- レイアウト外周の左側の余白を設定
layoutOptions.SetPaddingL 0
-- レイアウト外周の右側の余白を設定
layoutOptions.SetPaddingR 0
-- レイアウト外周の上側の余白を設定
layoutOptions.SetPaddingT 0
-- セル間の余白を一括設定(水平方向の余白、垂直方向の余白)
layoutOptions.SetMargin 0 0
-- レイアウト外周の余白を一括設定(上側の余白、右側の余白、下側の余白、左側の余白)
layoutOptions.SetPadding 0 0 0 0
)
全てのウィジェットで共通。