ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

GridLayout のプロパティ

グリッド レイアウト マネージャーの動作の制御

グリッド レイアウト マネージャーは、Figure 全体、または Figure 内のコンテナーにまたがる透明なグリッドの行と列に沿って UI コンポーネントを配置します。グリッド レイアウトのプロパティ値を変更すると、動作の特定の特性を変更できます。ドット表記を使用して、特定のオブジェクトとプロパティを参照します。

uf = uifigure;
g = uigridlayout(uf);
g.ColumnWidth = {100,'1x'};

グリッド

すべて展開する

列幅。数値、あるいは文字 'x' と組み合わされた数値のいずれかを含む cell 配列として指定します。値の任意の組み合わせを指定できます。cell 配列内の要素数が、グリッド内の列数を制御します。たとえば、4 列のグリッドを作成するには、1 行 4 列の cell 配列を指定します。

列幅には 2 つの異なったタイプがあります。

  • ピクセル単位の固定幅 — 数値を指定します。列幅は、指定されたピクセル数で固定されます。親コンテナーのサイズが変更されても、列幅は変わりません。

  • 可変幅 — 文字 'x' と組み合わされた数値を指定します (たとえば、'1x')。親コンテナーのサイズが変更されると、列幅は拡大または縮小します。可変幅の列は、固定幅の列によって使用されずに残っている横方向のスペースを埋めます。文字 'x' と組み合わせる数値は、残りのスペースをすべての可変幅の列間で分割するための重みです。グリッドに可変幅の列が 1 つしかない場合は、数値とは無関係に残りのスペースがすべて使用されます。同じ数値を使用する可変幅の列が複数ある場合は、スペースが等しく共有されます。それ以外の場合、スペースの量は数値に比例します。

たとえば、{100,'2x','1x'} は最初の列に対し 100 ピクセルを指定し、後の 2 つの列が残りの横方向のスペースを共有します。2 番目の列は、3 番目の列の 2 倍のスペースを使用します。

レイアウトの特性を変更すると、このプロパティの値に影響が及ぶ場合があります。たとえば、完全に入力されたグリッドに対してさらにコンポーネントを追加した場合、グリッドのサイズは、新たなコンポーネントを収容するように変更されます。また、コンポーネントを含む列を削除しようとしても、それらのコンポーネントがその列の外に移されるまで ColumnWidth プロパティは変更されません。

行の高さ。数値、あるいは文字 'x' と組み合わされた数値のいずれかを含む cell 配列として指定します。値の任意の組み合わせを指定できます。cell 配列内の要素数が、グリッド内の行数を制御します。たとえば、4 行をもつグリッドを作成するには、1 行 4 列の cell 配列を指定します。

行の高さには、2 つの異なったタイプがあります。

  • ピクセル単位の固定の高さ — 数値を指定します。行の高さは、指定されたピクセル数で固定されます。親コンテナーのサイズが変更されても、行の高さは変わりません。

  • 可変の高さ — 文字 'x' と組み合わされた数値を指定します (たとえば、'1x')。親コンテナーのサイズが変更されると、行は拡大または縮小します。可変の高さの行は、固定の高さの行によって使用されずに残っている縦方向のスペースを埋めます。文字 'x' と組み合わせる数値は、残りのスペースをすべての可変高の行間で分割するための重みです。グリッドに可変の高さの行が 1 つしかない場合は、数値とは無関係に残りのスペースがすべて使用されます。同じ数値を使用する可変の高さの行が複数ある場合は、スペースが等分されます。それ以外の場合、スペースの量は数値に比例します。

たとえば、{100,'2x','1x'} は最初の行に対し 100 ピクセルを指定し、後の 2 つの行に残りの縦方向のスペースが配分されます。2 番目の行は、3 番目の行の 2 倍のスペースを使用します。

レイアウトの特性を変更すると、このプロパティの値に影響が及ぶ場合があります。たとえば、完全に入力されたグリッドに対してさらにコンポーネントを追加した場合、グリッドのサイズは、新たなコンポーネントを収容するように変更されます。また、コンポーネントを含む行を削除しようとしても、それらのコンポーネントがその行の外に移されるまで RowHeight プロパティは変更されません。

列の間隔。グリッド内の隣接列との間のピクセル数を示すスカラー数値として指定します。指定した数値はすべての列に適用されます。

行の間隔。グリッド内の隣接行との間のピクセル数を示すスカラー数値として指定します。指定した数値はすべての行に適用されます。

グリッドの外周囲のパディング。[left bottom right top] という形式のベクトルとして指定します。ベクトルの要素は次の表のとおりです。

ベクトル要素説明
left

親コンテナーの内側左端とグリッドの左端の間の距離 (ピクセル単位)。

bottom

親コンテナーの内側下端とグリッドの下端の間の距離 (ピクセル単位)。

right

親コンテナーの内側右端とグリッドの右端の間の距離 (ピクセル単位)。

top

親コンテナーの内側上端とグリッドの上端の間の距離 (ピクセル単位)。親コンテナーの内側上端は、すべての装飾 (タイトル、タブ ラベル、メニュー バーなど) の下から始まります。

対話機能

すべて展開する

子の可視性。'on' または 'off' として指定します。グリッド内のすべての子コンポーネントとその子孫を非表示にするには、このプロパティを 'off' に設定します。子とその子孫は、その Visible プロパティの設定にかかわらず非表示になります。コンポーネントが非表示になっている場合、アプリには表示されませんが、プロパティの取得や設定はできます。

このプロパティを 'on' に設定した場合、子とその子孫は、その Visible プロパティが 'on' に設定されている場合にのみ表示されます。

グリッドの Visible プロパティを設定しても、子孫の Visible プロパティの値は変更されません。

スクロール機能。'off' または 'on' として指定します。このプロパティを 'on' に設定すると、グリッド内でのスクロールが有効になります。スクロールするには、次の条件を満たしていなければなりません。

  • グリッドの 'RowHeight' プロパティに対して指定した値の合計は、親コンテナーの高さより大きくなければならない。

  • グリッドの 'ColumnWidth' プロパティに対して指定した値の合計は、親コンテナーの幅より大きくなければならない。

  • グリッドの少なくとも 1 行または 1 列が、固定ピクセルの高さまたは幅に設定されていなければならない。

  • グリッドにコンポーネントが含まれていなければならない。

特定のタイプのチャートと座標軸では、スクロール可能なコンテナーはサポートされていません。ただし、チャートや座標軸をスクロール不可能なパネル内に配置してから、そのパネルをスクロール可能なコンテナーに配置することはできます。詳細については、App Designer でのグラフィックスの表示を参照してください。

位置

すべて展開する

レイアウト オプション。GridLayoutOptions オブジェクトとして指定します。このプロパティは、入れ子にされたグリッド レイアウト コンテナーのオプションを指定します。グリッド レイアウトが別のグリッド レイアウト コンテナーの子でない場合 (たとえば、figure や panel の子である場合)、このプロパティは空となり、効果はありません。ただし、グリッド レイアウトが別のグリッド レイアウトの子である場合、GridLayoutOptions オブジェクトの Row および Column プロパティを設定して、親グリッドの目的の行と列にその子グリッドを配置できます。

たとえば、次のコードは grid1 の 3 行目の 2 列目で grid2 を入れ子にしています。

grid1 = uigridlayout([4 3]);
grid2 = uigridlayout(grid1);
grid2.Layout.Row = 3;
grid2.Layout.Column = 2;
子グリッドが親グリッドの複数の行や列にまたがるようにするには、Row または Column プロパティを 2 要素ベクトルとして指定します。たとえば、次のコマンドを実行すると、grid2grid12 列目から 3 列目にかけてまたがります。
grid2.Layout.Column = [2 3];

コールバック

すべて展開する

オブジェクト作成関数。次の値のいずれかとして指定します。

  • 関数ハンドル。

  • 最初の要素が関数ハンドルである cell 配列。cell 配列内のその後の要素はコールバック関数に渡される引数です。

  • 有効な MATLAB® 式を含む文字ベクトル (非推奨)。MATLAB は、この式をベース ワークスペースで評価します。

コールバックを関数ハンドル、cell 配列、または文字ベクトルとして指定する方法の詳細については、App Designer でコールバックを記述するを参照してください。

このプロパティは、MATLAB がオブジェクトを作成するときに実行されるコールバック関数を指定します。MATLAB は CreateFcn コールバックを実行する前に、すべてのプロパティ値を初期化します。CreateFcn プロパティを指定しない場合、MATLAB は既定の作成関数を実行します。

既存のコンポーネントに CreateFcn プロパティを設定しても効果はありません。

このプロパティを関数ハンドルまたは cell 配列として指定した場合、コールバック関数の最初の引数を使用して、作成中のオブジェクトにアクセスできます。それ以外の場合は、関数 gcbo を使用してオブジェクトにアクセスします。

オブジェクト削除関数。次の値のいずれかとして指定します。

  • 関数ハンドル。

  • 最初の要素が関数ハンドルである cell 配列。cell 配列内のその後の要素はコールバック関数に渡される引数です。

  • 有効な MATLAB 式を含む文字ベクトル (非推奨)。MATLAB は、この式をベース ワークスペースで評価します。

コールバックを関数ハンドル、cell 配列、または文字ベクトルとして指定する方法の詳細については、App Designer でコールバックを記述するを参照してください。

このプロパティは、MATLAB がオブジェクトを削除するときに実行されるコールバック関数を指定します。MATLAB は、オブジェクトのプロパティを破棄する前に DeleteFcn コールバックを実行します。DeleteFcn プロパティを指定しない場合、MATLAB は既定の削除関数を実行します。

このプロパティを関数ハンドルまたは cell 配列として指定した場合、コールバック関数の最初の引数を使用して、削除されるオブジェクトにアクセスできます。それ以外の場合は、関数 gcbo を使用してオブジェクトにアクセスします。

コールバック実行制御

すべて展開する

コールバックの割り込み。'on' または 'off' として指定します。Interruptible プロパティは実行中のコールバックが割り込み可能かどうかを決定します。

次の 2 つのコールバックの状態について考慮する必要があります。

  • "実行中" コールバックは、現在実行しているコールバックです。

  • "割り込み" コールバックは、実行中のコールバックに割り込もうとするコールバックです。

MATLAB がコールバックを呼び出すたびに、そのコールバックは実行中のコールバック (がある場合) に割り込もうとします。実行中のコールバックを所有するオブジェクトの Interruptible プロパティが、割り込み可能かどうかを決定します。Interruptible プロパティは次の 2 つの値をとることができます。

  • 'on' — 他のコールバックがオブジェクトのコールバックに割り込むことを許可します。割り込みは、drawnowfigureuifiguregetframewaitforpause コマンドなどの、MATLAB が次にキューを処理するポイントで発生します。

    • 実行中のコールバックにこれらのいずれかのコマンドが含まれている場合、MATLAB はそのポイントでコールバックの実行を停止し、割り込みコールバックを実行します。割り込みコールバックが完了すると、MATLAB は実行中だったコールバックの実行を再開します。

    • 実行中のコールバックにこれらのコマンドが含まれていない場合、MATLAB はそのコールバックの実行を割り込みなしで完了します。

  • 'off' — 割り込みの試行をすべてブロックします。割り込みコールバックを所有するオブジェクトの BusyAction プロパティが、その割り込みコールバックを破棄するかキューに入れるかを決定します。

メモ

コールバックの割り込みと実行は、以下の状況では動作が異なります。

  • 割り込みコールバックが DeleteFcnCloseRequestFcn または SizeChangedFcn の各コールバックの場合、Interruptible プロパティの値にかかわらず割り込みが発生します。

  • 実行中のコールバックが関数 waitfor を現在実行している場合、Interruptible プロパティの値にかかわらず割り込みが発生します。

  • Timer オブジェクトは、Interruptible プロパティ値にかかわらず、スケジュールに従って実行されます。

MATLAB は、割り込みが発生したときにプロパティの状態や表示を保存しません。たとえば、gca コマンドや gcf コマンドから返されたオブジェクトは、別のコールバックを実行するときに変更されている可能性があります。

コールバック キューイング。'queue' または 'cancel' として指定します。BusyAction プロパティは MATLAB による割り込みコールバックの実行の処理方法を決定します。次の 2 つのコールバックの状態について考慮する必要があります。

  • "実行中" コールバックは、現在実行しているコールバックです。

  • "割り込み" コールバックは、実行中のコールバックに割り込もうとするコールバックです。

MATLAB がコールバックを呼び出すたびに、そのコールバックは実行中のコールバックに割り込もうとします。実行中のコールバックを所有するオブジェクトの Interruptible プロパティが、割り込みを許可するかどうかを決定します。割り込みが許可されない場合は、割り込みコールバックを所有するオブジェクトの BusyAction プロパティが、そのコールバックを破棄するかキューに入れるかを決定します。BusyAction プロパティは次の値を取ることができます。

  • 'queue' — 割り込みコールバックをキューに入れ、実行中のコールバックが終了した後に処理されるようにします。

  • 'cancel' — 割り込みコールバックを実行しません。

このプロパティは読み取り専用です。

削除状態。'off' または 'on' として返されます。MATLAB は、DeleteFcn コールバックが実行を開始すると、BeingDeleted プロパティを 'on' に設定します。コンポーネント オブジェクトが存在しなくなるまで BeingDeleted プロパティは 'on' に設定されたままです。

クエリや変更の前にオブジェクトが削除されようとしていないか確認するために BeingDeleted プロパティの値をチェックします。

親/子

すべて展開する

親コンテナー。関数 uifigure を使用して作成された Figure オブジェクト、またはその子コンテナー (TabPanelButtonGroup または GridLayout) のいずれかとして指定します。コンテナーが指定されていない場合、MATLAB は関数 uifigure を呼び出し、親コンテナーとして使用される新しい Figure オブジェクトを作成します。

子。UI コンポーネント オブジェクトの配列として返されます。このプロパティは、子のリストの参照や子の並べ替えに使用します。子を並べ替えるには、このプロパティ自体で値の順序を並べ替えます。このプロパティを使用して子の追加や削除を行うことはできません。このリストに子を追加するには、子 UI コンポーネントの Parent プロパティを設定します。

子を並べ替えても、グリッド内のコンポーネントの位置には影響しません。グリッド内のコンポーネントの位置を変更するには、Layout プロパティを設定します。

オブジェクト ハンドルの可視性。'on''callback' または 'off' として指定します。

このプロパティは、オブジェクトの親がもつ子のリストにおけるそのオブジェクトの可視性を制御します。オブジェクトがその親オブジェクトのリストで、子として可視できない場合、オブジェクト階層の検索またはプロパティのクエリによってオブジェクトを取得する関数は、そのオブジェクトを返しません。これらの関数には、getfindobjclf および close が含まれます。オブジェクトは参照できない場合も有効です。オブジェクトにアクセスできる場合は、そのプロパティを設定および取得して、それをオブジェクトに作用する任意の関数に渡すことができます。

HandleVisibility の値説明
'on' オブジェクトは常に参照できます。
'callback'オブジェクトはコールバック内から、あるいはコールバックにより呼び出される関数から参照できます。しかし、コマンド ラインから呼び出される関数からは参照できません。このオプションを使用すると、コマンド ラインからのオブジェクトへのアクセスがブロックされますが、コールバック関数からのアクセスは許可されます。
'off'オブジェクトは常に参照できません。このオプションは、他の関数による UI の意図しない変更を防止するために役立ちます。HandleVisibility'off' に設定すると、その関数の実行中にオブジェクトが一時的に非表示になります。

識別子

すべて展開する

このプロパティは読み取り専用です。

グラフィックス オブジェクトのタイプ。'uigridlayout' として返されます。

オブジェクト識別子。文字ベクトルまたは string スカラーとして指定します。オブジェクトの識別子として機能する一意の Tag 値を指定できます。コードの他の部分からオブジェクトにアクセスする必要がある場合、関数 findobj を使用して Tag 値に基づいてオブジェクトを検索できます。

ユーザー データ。任意の MATLAB 配列として指定します。たとえば、スカラー、ベクトル、行列、cell 配列、文字配列、table、または構造体を指定できます。このプロパティを使用して、任意のデータをオブジェクトに保存します。

App Designer を使用している場合は、UserData プロパティを使用する代わりに、アプリでパブリック プロパティまたはプライベート プロパティを作成してデータを共有します。詳細については、App Designer アプリ内でのデータの共有を参照してください。

R2018b で導入