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

Table のプロパティ

テーブル UI コンポーネントの外観と動作の制御

ここでは、GUIDE または関数 figure で作成されたアプリのテーブルに対して有効なプロパティを紹介しています。App Designer または関数 uifigure を使用する場合は、「Table のプロパティ」を参照してください。詳細については、GUIDE の移行策を参照してください。

テーブル UI コンポーネントには、アプリ内のデータの行と列が表示されます。関数 uitable はテーブル UI コンポーネントを作成し、表示される前に必要なプロパティを設定します。プロパティ値を変更することによって、外観および動作の一部の特性を変更できます。ドット表記を使用して、特定のオブジェクトとプロパティを参照します。

f = figure;
t = uitable(f,'Data',[1 2 3; 4 5 6; 7 8 9]);
t.FontSize = 9;

テーブル

すべて展開する

テーブル データ。数値配列、logical 配列または cell 配列として指定します。テーブル データは数値型、logical または char にすることができます。cell 配列を使用して、異なるデータ型の混合を指定します。

テーブル データは、ColumnFormat プロパティによって指定された形式で表示されます。テーブル データのデータ型と ColumnFormat プロパティの値で不一致がある場合、MATLAB® はデータを変換するか、警告を表示します。詳細については、ColumnFormat プロパティの説明を参照してください。

ユーザーが無効なデータを入力したときに警告が発生するのを防ぐには、関数 CellEditCallback を記述してデータを適切な型に変換します。

プロパティ配列 Data の行数が配列 RowName の要素数と一致しない場合、結果のテーブルの行数は 2 つの値のうちの大きい方になります。ColumnName プロパティがプロパティ配列 Data の列数と一致しない場合も同じことが当てはまります。

例: t = uitable('Data',rand(10,3))

例: t = uitable('Data',{'blue' 5 true; 'orange' 25 false})

列の見出し名。次の値のいずれかとして指定します。

  • 'numbered' — 列見出しは 1 から始まる連続する番号です。

  • 文字ベクトルの cell 配列または categorical 配列 — 配列の各要素は列の名前になります。1n 列の cell 配列を指定した場合、MATLAB は n1 列の cell 配列として値を格納して返します。mn 列の配列を指定した場合、MATLAB は配列を列ベクトルに変更します。列名内に垂直スラッシュ (|) を含めて、複数行の列名を指定します。たとえば、値 'Telephone|Number' は "Telephone" と "Number" の語の間に改行文字を使用して列見出しを生成します。

  • 空の cell 配列 ({}) — テーブルには列見出しがありません。

  • 空行列 ([]) — テーブルには列見出しがありません。

プロパティ配列 Data の列数が配列 ColumnName の要素数と一致しない場合、結果のテーブルの列数は 2 つの値のうちの大きい方になります。

例: t = uitable('ColumnName',{'Name'; 'Number'},'Data',{'Bob' 5})

例: t = uitable('ColumnName',{'Name'; []},'Data',{'Bob' 5})

例: t = uitable('ColumnName',{'Name'; 'Telephone|Number'},'Data',{'Bob','555-1212'})

テーブル列の幅。'auto' または 1n 列の cell 配列として指定します。

cell 配列内の各列は テーブル内の列に対応します。値はピクセル単位です。'auto' を指定すると、MATLAB は複数の要素を自動的に使用して列の幅を計算します。その 1 つは ColumnName プロパティ値です。

cell 配列で固定の列幅と 'auto' の列幅を組み合わせることも、単一値の 'auto' を指定してすべての列幅を自動にすることもできます。

テーブル プロパティ エディターで [自動幅] を選択することは、ColumnWidth プロパティを 'auto' に設定するのと同じ効果があります。

例: t = uitable('ColumnWidth','auto','Data',[1 2 3; 4 5 6])

例: t = uitable('ColumnWidth',{64 60 40},'Data',[1 2 3; 4 5 6])

例: t = uitable('ColumnWidth',{64 'auto' 40},'Data',[1 2 3; 4 5 6])

列セルを編集する機能。以下として指定します。

  • 空の logical 配列 ([]) — 列は編集できません。

  • 1n 列の logical 配列 — この配列はどの列が編集可能かを指定します。n の値はテーブル内の列の数と等しくなります。配列内の各値はテーブルの列に対応します。配列の値が true の場合、その列のセルが編集可能になります。値が false の場合、その列内のセルが編集不可になります。

  • 論理スカラー — テーブル全体が編集可能または編集不可。

例: t = uitable('Data',rand(10,3),'ColumnEditable',[false true true])

例: t = uitable('Data',rand(10,3),'ColumnEditable',false)

チェック ボックスまたはポップアップ メニューを含むテーブル列は、ユーザーがこれらのコントロールを操作できるように編集可能にしなければなりません。

セルの表示形式。空の cell 配列または 1n 列の文字ベクトルの cell 配列として指定します。

このプロパティは、各列のデータの表示方法と、UI でのそのデータの編集に関する制約を決定します。cell 配列の要素は、Data プロパティ配列の列に対応します。特定の列の表示形式を指定しない場合は、その列に [] を指定します。列の形式を指定しない場合、MATLAB はセル内のデータのデータ型によって既定の表示を決定します。

cell 配列の要素は、次の表で説明する値のいずれかでなければなりません。

セル形式の値

説明

'char'

左揃えの値を表示します。

セルを編集するには、テキストを入力して既存の値を置き換えます。

プロパティ配列 Data の要素が論理値である場合、true または false がテーブルに表示されます。

'logical'

チェック ボックスを表示します。

セルを編集するには、チェック ボックスをオンまたはオフにします。その後、MATLAB は対応する Data 値を true または false に設定します。

ユーザーがチェック ボックスをオンまたはオフにできるように、ColumnEditable プロパティ値は true にしなければなりません。

対応する Data 値が true の場合、チェック ボックスは最初はオンになっています。プロパティ配列 Data の対応する値は、データがテーブルで正しく表示されるようにするため、logical 型でなければなりません。

'numeric'

数値データのコマンド ウィンドウの表示と等しい右揃えの値を表示します。プロパティ配列 Data の要素が論理値である場合、1 または 0 がテーブルに表示されます。プロパティ配列 Data の要素が数値でも論理値でもない場合、NaN がテーブルに表示されます。

セルを編集するには、テキストを入力します。

ユーザーが pi などの定数を表すテキストを入力した場合に値を同等の数値に変換するように、関数 CellEditCallback をコード化することができます。この場合、MATLAB はユーザーが入力したテキストを数値に変換し、Data プロパティに保存しようとします。その後、関数 CellEditCallback が実行されます。例については CellEditCallback の説明を参照してください。

1n 列の文字ベクトルの cell 配列。{'one' 'two' 'three'} など。

ポップアップ メニューを表示します。

セルを編集するには、ポップアップ メニューから項目を選択します。MATLAB は選択されたメニュー項目に対応するプロパティ配列 Data の値を設定します。ColumnEditable プロパティ値は、ユーザーがポップアップ メニューの項目を選択できるように、true にしなければなりません。

関数 format が受け入れる形式名。'short''long' など。

指定された形式を使用して、Data プロパティ値を表示します。

ポップアップ メニューの ColumnFormat の効果と各種データ型

ColumnFormat 値がポップアップ メニューを定義している場合、初期の Data 値はそのメニュー内のオプションのいずれかである必要はありません。ユーザーが異なる選択を行うまで、初期の Data 値が表示されます。

たとえば、特定の列のすべての行で Data プロパティの値が 'Choose' であり、ColumnFormat の値で 'group 1' および 'group 2' の選択肢をもつポップアップ メニューを指定するとします。MATLAB がテーブルを作成すると、これらのテーブル セルはユーザーがポップアップ メニューの項目を選択するまで 'Choose' を表示します。

f = figure;
myData = {'Andrew' 31 'Male' 'Choose'; ...
          'Bob' 41 'Male' 'Choose';  ...
          'Anne' 20 'Female' 'Choose';};
t = uitable('Parent', f,...
            'Position', [25 25 334 78],...            
            'ColumnFormat',({[] [] [] {'group 1' 'group 2'}}),... 
            'ColumnEditable', true,...
            'Data', myData);

編集可能な列のデータ表示

次の表で、各種データ型が特定の ColumnFormat 値でどのように表示されるかを説明します。

 ColumnFormat
'numeric''char''logical'
データ配列値のデータ型任意の数値型テーブルは数値をそのまま表示します。MATLAB は値をテキストに変換し、テーブルに左揃えで表示します。MATLAB が値を変換できない場合は、NaN が表示されます。推奨されません。MATLAB は、関数 CellEditCallback を定義しない限り、ユーザーがセルを編集するときに警告を返します。
charテーブルには、値が数値であるかのように、右揃えで表示されます。テーブルは、値をそのまま表示します。推奨されません。MATLAB は、関数 CellEditCallback を定義しない限り、ユーザーがセルを編集するときに警告を返します。
logicalテーブルは論理値を数値として表示します。MATLAB は、関数 CellEditCallback を定義しない限り、ユーザーがセルを編集するときに警告を返します。テーブルは論理値を左揃えの 'true' または 'false' として表示します。MATLAB は、関数 CellEditCallback を定義しない限り、ユーザーがセルを編集するときに警告を返します。テーブルはチェック ボックスとして論理値を表示します。

たとえば次のテーブルでは、最初の列 (X-Data) は、その列の ColumnFormat 値が 'char' であるため左揃えになります。

行の見出し名。次の値のいずれかとして指定します。

  • 'numbered' — 行の見出しは 1 から始まる連続する番号です。

  • 文字ベクトルの cell 配列または categorical 配列 — 配列の各要素は行の名前になります。行名は 1 行のテキストに制限されます。1n 列の cell 配列を指定した場合、MATLAB は n1 列の cell 配列として値を格納して返します。mn 列の配列を指定した場合、MATLAB は配列を列ベクトルに変更します。

  • 空の cell 配列 ({}) — テーブルには行見出しがありません。

  • 空行列 ([]) — テーブルには行見出しがありません。

プロパティ配列 Data の行数が配列 RowName の要素数と一致しない場合、結果のテーブルの行数は 2 つの値のうちの大きい方になります。

例: t = uitable('RowName',{'Name';'Number'},'Data',{'Bob';5})

例: t = uitable('RowName',{'Name';[]},'Data',{'Bob';5})

テーブル列を再配列する機能。'off' または 'on'、もしくは数値または logical 1 (true) または 0 (false) として指定します。'on' の値は true と等価であり、'off'false と等価です。したがって、このプロパティの値を logical 値として使用できます。値は matlab.lang.OnOffSwitchState 型の on/off logical 値として格納されます。

このプロパティは、ユーザーが列ヘッダーをクリックしてドラッグすることにより (ラベルではなく) テーブル列を並べ替えられるようにする方法を提供します。

メモ

UI 内でテーブルの列を並べ替えても、Data プロパティ配列の列には影響しません。

フォント

すべて展開する

フォント名。システムでサポートされているフォント名または 'FixedWidth' として指定します。既定のフォントは、特定のオペレーティング システムとロケールによって異なります。

どのロケールでもテキストが整って見える固定幅のフォントを使用するには、'FixedWidth' を指定します。実際に使用される固定幅フォントは、root オブジェクトの FixedWidthFontName プロパティによって決まります。FixedWidthFontName プロパティを変更すると、表示内容が新しいフォントを使用して直ちに更新されます。

例: 'Arial'

フォント サイズ。正の数値として指定します。FontUnits プロパティで単位を指定します。既定のサイズはシステムによって異なります。

例: 12

例: 12.5

フォントの太さ。次の表の値として指定します。

  • 'normal' — 各フォントで定義されている既定の太さ

  • 'bold' — 標準よりも太い文字

MATLAB ではフォントは、FontWeight プロパティを使用して、ユーザーのシステムで使用可能なフォントから選択します。すべてのフォントに太字フォントがあるとは限りません。そのため、太字フォントを指定しても標準フォントの太さと変わらない場合があります。

メモ

フォントの太さの値 'light' および 'demi' は R2014b で削除されました。これらの値のいずれかを指定した場合、結果は標準フォントの太さとなります。

フォントの角度。'normal' または 'italic' として指定します。MATLAB は、このプロパティを使用して、ユーザーのシステムで使用可能なフォントから選択します。このプロパティを 'italic' に設定すると、ユーザーのシステムで利用できる場合、イタリック フォントを選択します。

メモ

'oblique' は削除されました。代わりに 'italic' を使用してください。

フォントの単位。次の表のいずれかの値を指定します。

単位の値説明
'points'ポイント。1 ポイントは 1/72 インチです。
'normalized'フォント サイズを高さの割合として指定する、正規化された値。UI コンポーネントのサイズを変更するときに、MATLAB はその割合を維持して、表示されるフォントをスケーリングします。
'inches'インチ。
'centimeters'センチメートル。
'pixels'

ピクセル。

R2015b 以降、Windows® および Macintosh システムにおいて、ピクセル単位の距離はシステム解像度に依存しません。

  • Windows システムの 1 ピクセルは 1/96 インチです。

  • Macintosh システムの 1 ピクセルは 1/72 インチです。

Linux® システムでは、ピクセルのサイズは使用しているシステムの解像度によって決まります。

対話機能

すべて展開する

可視性の状態。'on' または 'off'、もしくは数値または logical 1 (true) または 0 (false) として指定します。'on' の値は true と等価であり、'off'false と等価です。したがって、このプロパティの値を logical 値として使用できます。値は matlab.lang.OnOffSwitchState 型の on/off logical 値として格納されます。

  • 'on' — オブジェクトを表示します。

  • 'off' — オブジェクトを削除せずに非表示にします。非表示の UI コンポーネントのプロパティには引き続きアクセスできます。

アプリの起動を高速化するには、起動時に表示する必要のないすべての UI コンポーネントの Visible プロパティを 'off' に設定します。

テーブルの操作可能状態。'on''off' または 'inactive' として指定します。Enable プロパティは、UI コンポーネントがボタンのクリックに応答するかどうかを制御します。以下の 3 つのうちいずれかの値をとります。

  • 'on' – UI コンポーネントは操作可能です。

  • 'off' – UI コンポーネントは操作不可で、グレー表示されます。

  • 'inactive' – UI コンポーネントは操作不可ですが、Enable'on' であるときと同じ外観になります。

Enable プロパティの値とボタン クリックのタイプによって UI の応答方法が決定します。

Enable の値左クリックの応答右クリックの応答
'on'

関数 CellSelectionCallback が実行されます (ヘッダー セルではなく、テーブル セルに対してのみ)。Indices プロパティは MATLAB がコールバック関数に渡すコールバック データ オブジェクトで更新されます。

  1. Figure の WindowButtonDownFcn コールバックが実行されます。

  2. ButtonDownFcn コールバックが実行されます。

'off' または 'inactive'

  1. Figure の WindowButtonDownFcn コールバックが実行されます。

  2. ButtonDownFcn コールバックが実行されます。

  1. Figure の WindowButtonDownFcn コールバックが実行されます。

  2. ButtonDownFcn コールバックが実行されます。

ツールヒント。文字ベクトル、string スカラー、または categorical 配列として指定します。このプロパティを使用して、実行時にユーザーがポインターをコンポーネントに合わせるとメッセージが表示されるようにします。ツールヒントは、コンポーネントが無効になっていると表示されません。このプロパティを categorical 配列として指定した場合、MATLAB はカテゴリの完全なセットではなく、配列内の値を使用します。

複数行のテキストを作成するには、関数 sprintf を使用して改行文字 ('\n') をテキストに挿入します。以下に例を示します。

txt = sprintf('Line 1\nLine 2');

その後、Tooltip プロパティを sprintf によって返された値に設定します。

コンテキスト メニュー。関数 uicontextmenu を使用して作成された ContextMenu オブジェクトとして指定します。このプロパティは、コンポーネントを右クリックしたときにコンテキスト メニューを表示するために使用します。

ツールヒント。文字ベクトル、string スカラー、または categorical 配列として指定します。アプリのコンポーネントにカーソルを合わせるとツールヒントが表示されます。このプロパティを categorical 配列として指定した場合、MATLAB はカテゴリの完全なセットではなく、配列内の値を使用します。

メモ

R2018b 以降、TooltipString プロパティは推奨されません。代わりに、Tooltip プロパティを使用してください。

メモ

Selected プロパティの動作は R2014b で変更されており、推奨されません。このタイプのオブジェクトには何も影響しなくなりました。このパラメーターは将来のリリースで削除される可能性があります。

メモ

SelectionHighlight プロパティの動作は R2014b で変更されており、推奨されません。このタイプのオブジェクトには何も影響しなくなりました。このパラメーターは将来のリリースで削除される可能性があります。

色とスタイル

すべて展開する

セル テキストの色。RGB 3 成分、16 進数カラー コード、または表にリストされた色オプションのいずれかとして指定します。

RGB 3 成分および 16 進数カラー コードは、カスタム色を指定するのに役立ちます。

  • RGB 3 成分は、色の赤、緑、青成分の強度を指定する 3 成分の行ベクトルです。強度値は [0,1] の範囲でなければなりません。たとえば [0.4 0.6 0.7] のようになります。

  • 16 進数カラー コードは、ハッシュ記号 (#) で始まり、3 桁または 6 桁の 0 から F までの範囲の 16 進数が続く文字ベクトルまたは string スカラーです。これらの値では大文字小文字は区別されません。したがって、カラー コード '#FF8800''#ff8800''#F80'、および '#f80' は等価です。

あるいは、名前を使用して一部の一般的な色を指定できます。次の表に、名前の付いた色オプション、等価の RGB 3 成分、および 16 進数カラー コードを示します。

色名省略名RGB 3 成分16 進数カラー コード外観
'red''r'[1 0 0]'#FF0000'

'green''g'[0 1 0]'#00FF00'

'blue''b'[0 0 1]'#0000FF'

'cyan' 'c'[0 1 1]'#00FFFF'

'magenta''m'[1 0 1]'#FF00FF'

'yellow''y'[1 1 0]'#FFFF00'

'black''k'[0 0 0]'#000000'

'white''w'[1 1 1]'#FFFFFF'

MATLAB の多くのタイプのプロットで使用されている既定の色の RGB 3 成分および 16 進数カラー コードを次に示します。

RGB 3 成分16 進数カラー コード外観
[0 0.4470 0.7410]'#0072BD'

[0.8500 0.3250 0.0980]'#D95319'

[0.9290 0.6940 0.1250]'#EDB120'

[0.4940 0.1840 0.5560]'#7E2F8E'

[0.4660 0.6740 0.1880]'#77AC30'

[0.3010 0.7450 0.9330]'#4DBEEE'

[0.6350 0.0780 0.1840]'#A2142F'

背景色。RGB 3 成分または RGB 3 成分の m 行 3 列の行列として指定します。RGB 3 成分は、色の赤、緑、青成分の強度を指定する行ベクトルです。強度値は [0,1] の範囲でなければなりません。色の名前が無効です。

テーブルの行の網掛けに m 色の反復パターンを使用する場合、m 行 3 列の行列を指定します。この行列の各行は RGB 3 成分でなければなりません。MATLAB は、RowStriping プロパティが 'on' の場合に行列の行を使用します。テーブルの背景は、RowStriping'on' で、さらに BackgroundColor が m 行 3 列の行列である場合を除き、縞模様になりません。

例: t = uitable('Data',rand(10,3),'BackgroundColor',[0.85 0.85 1])

例: t = uitable('Data',rand(10,3),'BackgroundColor',[1 1 1 ;0.85 0.85 1])

次の表に、特定の色の RGB 3 成分を示します。

RGB 3 成分
[1 1 0]
マゼンタ[1 0 1]
シアン[0 1 1]
[1 0 0]
[0 1 0]
[0 0 1]
[1 1 1]
[0 0 0]

1 行おきの網掛け。'on' または 'off'、もしくは数値または logical 1 (true) または 0 (false) として指定します。'on' の値は true と等価であり、'off'false と等価です。したがって、このプロパティの値を logical 値として使用できます。値は matlab.lang.OnOffSwitchState 型の on/off logical 値として格納されます。

このプロパティはテーブルの行の網掛けパターンを制御します。RowStriping 値が 'on' に設定されている場合、BackgroundColor 行列は反復パターンとして表示される行の色を指定します。BackgroundColor 行列に 1 行しかない場合は、網掛けはすべてのテーブル行で同じになります。

RowStriping'off' に設定されている場合、BackgroundColor 行列の最初の色はテーブルのすべての行の網掛けを定義します。

位置

すべて展開する

位置とサイズ。[left bottom width height] の形式の 4 要素ベクトルとして指定します。次の表で、ベクトルの各要素について説明します。

要素説明
left親コンテナーの内側左端からテーブルの外側左端までの距離
bottom親コンテナーの内側下端からテーブルの外側下端までの距離
widthテーブルの外側の右端と左端の間の距離
heightテーブルの外側の上端と下端の間の距離

すべての測定値は、Units プロパティで指定した単位で表されます。

メモ

Position の値の基準は、親コンテナーの "描画可能領域" です。描画可能領域は、コンテナーの境界線の内側にある領域で、タイトルが占める領域は含まれません。親コンテナーが Figure である場合、メニュー バーおよびツール バーも描画可能領域には含まれません。

Extent プロパティを使用して、データに対するテーブルの適切なサイズを決定します。Position プロパティの width および heightExtent プロパティの幅と高さに設定します。テーブルの範囲が大きい場合、これを行うことによってテーブルが親コンテナーの右端または上端を超える可能性があります。

例:データ サイズを格納するように幅と高さを設定

Position ベクトルで 1 つまたは 2 つの連続値を変更するときにドット表記と配列インデックス付けを組み合わせることができます。たとえば、このコードはテーブルの Extent と一致するようにテーブルの幅と高さを設定します。

t = uitable('Data',rand(10,3));
t.Position(3:4) = t.Extent(3:4);

位置とサイズ。[left bottom width height] の形式の 4 要素ベクトルとして指定します。すべての測定値は、Units プロパティで指定した単位で表されます。

このプロパティ値は、Position プロパティ値および OuterPosition プロパティ値と同一です。

位置とサイズ。[left bottom width height] の形式の 4 要素ベクトルとして指定します。すべての測定値は、Units プロパティで指定した単位で表されます。

このプロパティ値は、Position プロパティ値および InnerPosition プロパティ値と同一です。

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

囲んでいる四角形のサイズ。4 要素の行ベクトルとして返されます。ベクトルの最初の 2 要素は常にゼロです。3 番目と 4 番目の要素はそれぞれ、テーブルを含む四角形の幅と高さです。すべての測定値は、Units プロパティで指定した単位で表されます。

MATLAB は現在の DataRowName および ColumnName プロパティ値に基づいて四角形のサイズを決定します。MATLAB は列幅と行幅を使用して幅と高さの値を推定します。推定される範囲は Figure よりも大きい場合があります。

Position プロパティの幅と高さの値を指定するときには、Extent プロパティの値の使用を検討します。

測定の単位。次の表のいずれかの値として指定します。

単位の値説明
'pixels' (既定)

ピクセル。

R2015b 以降、Windows および Macintosh システムにおいて、ピクセル単位の距離はシステム解像度に依存しません。

  • Windows システムの 1 ピクセルは 1/96 インチです。

  • Macintosh システムの 1 ピクセルは 1/72 インチです。

Linux システムでは、ピクセルのサイズは使用しているシステムの解像度によって決まります。

'normalized'これらの単位は親コンテナーを基準として正規化されます。コンテナーの左下隅が (0,0) で、右上隅が (1,1) になります。
'inches'インチ。
'centimeters'センチメートル。
'points'ポイント。1 ポイントは 1/72 インチです。
'characters'

これらの単位は、グラフィックス ルート オブジェクトの既定の uicontrol フォントを基にしています。

  • 文字の幅 = 文字 x の幅。

  • 文字の高さ = 2 行のテキストのベースライン間の距離。

既定の uicontrol フォントにアクセスするには、get(groot,'defaultuicontrolFontName') または set(groot,'defaultuicontrolFontName') を使用します。

MATLAB ではすべての単位を親オブジェクトの左下隅から測定します。

このプロパティは Position プロパティに影響します。Units プロパティを変更した場合、この既定値を想定する他の関数に影響を与えないように、計算の完了後に値を既定値に戻すことを検討してください。

Units プロパティと Position プロパティを指定する順序は次のように影響します。

  • Position プロパティの前に Units プロパティを指定する場合、MATLAB は指定した単位を使用して Position を設定します。

  • Position プロパティの後に Units プロパティを指定する場合、MATLAB は既定の Units を使用して位置を設定します。その後、MATLAB は Position の値を、指定した単位における等価の値に変換します。

コールバック

すべて展開する

セル編集コールバック関数。次の値のいずれかとして指定します。

  • 関数ハンドル。

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

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

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

この関数は、ユーザーがテーブルのセルの内容を変更したときに実行されます。このコールバック関数を使用すると、計算を実行したり、ユーザー入力を検証したりできます。

このプロパティを関数ハンドル (または関数ハンドルを含む cell 配列) で指定した場合、MATLAB はイベント データを含む CellEditData オブジェクトをコールバック関数の 2 番目の引数として渡します。このオブジェクトには次の表で説明するプロパティが含まれています。コールバック関数内のこれらのプロパティには、ドット表記を使用してアクセスできます。

プロパティ

説明

Indices

ユーザーが編集したセルの行および列のインデックスを含む 1 行 2 列の配列。

PreviousData

前のセル データ。既定の設定は、空行列 [] です。

EditData

ユーザーが入力した値。

NewData

MATLAB がプロパティ配列 Data に書き込んだ値。この値は、EditData と同じか変換後の値のいずれかです。

MATLAB がユーザー入力データでエラーを検出した場合、NewData プロパティは空です。

Error

MATLAB がユーザー入力データでエラーを検出した場合に返されるエラー メッセージ。

MATLAB が Data プロパティに値を正常に書き込んだ場合、Error プロパティは空です。

Error プロパティが空でない場合、CellEditCallback はメッセージを表示するか、問題の修正を試行することができます。

Source

関数 CellEditCallback を実行している Table オブジェクト。

EventName

'CellEdit'

ユーザーがテーブルのセルを編集すると、MATLAB は以下の手順を実行します。

  1. 新しい値をテーブルの Data プロパティに保存しようとします。

  2. 関数 CellEditCallback (存在する場合) を呼び出します。

値が結果としてエラーになり、関数 CellEditCallback が存在しない場合、セル データは以前の値に戻され、エラーは表示されません。

例:ユーザー入力の評価

この例は、数値のテーブル セルでユーザー入力データを評価するコールバック関数を作成する方法を示します。この動作を確認するには、このコードをエディターに貼り付けて実行します。

function myui
    f = figure;
    myData = { 'A '  31; 'B'  41; 'C'  5; 'D' 2.6};
    t = uitable('Parent',f,...
                'Position', [25 25 700 200], ...
                'Data',myData,...
                'ColumnEditable', [false true], ...
                'CellEditCallback',@converttonum);
        function converttonum(hObject,callbackdata)
             numval = eval(callbackdata.EditData);
             r = callbackdata.Indices(1)
             c = callbackdata.Indices(2)
             hObject.Data{r,c} = numval; 
        end
end

myui を実行すると、テーブルの 2 番目の列の値を変更できます。これに対し、コールバック関数 converttonum が実行されます。関数 converttonum は関数 eval を使用して入力を評価します。次に、セル データを numval の値に設定します。たとえば、pi または 1+1 を入力した場合、関数 converttonum はテーブル セル値を入力の数値表現に設定します。関数 converttonum にエラー チェックはないため、無効な表現ではエラーが返され、テーブル セルの新しい値が NaN になります。

セル選択コールバック関数。次の値のいずれかとして指定します。

  • 関数ハンドル。

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

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

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

このコールバック関数はユーザーが次のいずれかのアクションを実行したときに実行されます。

  • クリックするか矢印キーで移動することによってデータ セル (行または列のヘッダー セルではない) を強調表示する

  • Shift キーを押しながらセルを選択して、四角形のセルのグループを選択する

  • Ctrl を押したままクリックすることでセルを選択解除する

このプロパティを関数ハンドル (または関数ハンドルを含む cell 配列) で指定した場合、MATLAB はイベント データを含む CellSelectionChangeData オブジェクトをコールバック関数の 2 番目の引数として渡します。このオブジェクトには次の表に示したプロパティが含まれています。

プロパティ

説明

Indices

ユーザーが選択したセルの行および列のインデックスを含む n 行 2 列の配列。

Source

関数 CellSelectionCallback を実行している Table オブジェクト。

EventName

'CellSelection'

ボタンを押したときのコールバック関数。次の値の 1 つとして指定します。

  • 関数ハンドル。

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

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

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

ButtonDownFcn コールバックは、ユーザーが UI コンポーネント上でマウス ボタンをクリックしたときに実行される関数です。コールバックは次の状況で実行されます。

  • ユーザーがテーブルを右クリックし、Enable プロパティが 'on' に設定されている。

  • ユーザーがテーブルを右クリックまたは左クリックし、Enable プロパティが 'off' または 'inactive' に設定されている。

キーを押したときのコールバック関数。次の値のいずれかとして指定します。

  • 関数ハンドル。

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

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

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

このコールバック関数は、Table オブジェクトにフォーカスがあり、ユーザーがキーを押したときに実行されます。このプロパティに関数を定義しない場合、MATLAB はキー プレスを親 Figure に渡します。キーを繰り返し押すと Table オブジェクトのフォーカスが維持され、キーが押されるたびに関数が実行されます。ユーザーが複数のキーをほぼ同時に押した場合、MATLAB は最後に押されたキーを検出します。

このプロパティを関数ハンドル (または関数ハンドルを含む cell 配列) で指定した場合、MATLAB はコールバック データを含むオブジェクトをコールバック関数の 2 番目の引数として渡します。このオブジェクトには次の表で説明するプロパティが含まれています。コールバック関数内のこれらのプロパティには、ドット表記を使用してアクセスできます。

プロパティ

説明

例:

a

=

Shift

Shift-a

Character1 つまたは複数のキーを押した結果として表示される文字。文字は空の場合や出力できない場合があります。'a''=''''A'
Modifier押されている 1 つ以上の修飾キー (CtrlAltShift など) の名前が格納される cell 配列です。{1x0 cell}{1x0 cell}{'shift'}{'shift'}
Key押されているキー。キーに刻印された (小文字の) ラベルまたはテキストの説明によって識別されます。'a''equal''shift''a'
Sourceユーザーがキーを押したときのフォーカスのあるオブジェクトです。Table オブジェクトTable オブジェクトTable オブジェクトTable オブジェクト
EventNameコールバック関数を実行する原因となったアクションです。'KeyPress''KeyPress''KeyPress''KeyPress'

修飾キーを押すと、次のようにコールバック データに影響します。

  • 修飾キーは Character プロパティに影響を与える可能性がありますが、Key プロパティを変更することはありません。

  • 一部のキーと、Ctrl で修飾されたキーは、Character プロパティに出力不能文字を格納します。

  • CtrlAltShift および他のいくつかのキーは、Character プロパティ データを生成しません。

ユーザーがどの文字を押したかを判断するために、Figure の CurrentCharacter プロパティをクエリすることもできます。

キーを離したときのコールバック関数。次の値のいずれかとして指定します。

  • 関数ハンドル。

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

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

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

このコールバック関数は、Table オブジェクトにフォーカスがあり、ユーザーがキーを離したときに実行されます。

このプロパティを関数ハンドル (または関数ハンドルを含む cell 配列) で指定した場合、MATLAB はコールバック データを含むオブジェクトをコールバック関数の 2 番目の引数として渡します。このオブジェクトには次の表で説明するプロパティが含まれています。コールバック関数内のこれらのプロパティには、ドット表記を使用してアクセスできます。

プロパティ

説明

例:

a

=

Shift

Shift-a

Character

離されたキーの文字解釈。

'a''=''''A'
Modifier

'control' などの現在の修飾子、または修飾子がない場合は空の cell 配列

{1x0 cell}{1x0 cell}{1x0 cell}{1x0 cell}
Key

離されたキーの名前。キーに刻印された小文字のラベルまたはテキストの説明によって識別されます。

'a''equal''shift''a'
Sourceユーザーがキーを押したときのフォーカスのあるオブジェクトです。Table オブジェクトTable オブジェクトTable オブジェクトTable オブジェクト
EventNameコールバック関数を実行する原因となったアクションです。'ase''ase''ase''ase'

修飾キーを押すと、次のようにコールバック データに影響します。

  • 修飾キーは Character プロパティに影響を与える可能性がありますが、Key プロパティを変更することはありません。

  • 一部のキーと、Ctrl で修飾されたキーは、Character プロパティに出力不能文字を格納します。

  • CtrlAltShift および他のいくつかのキーは、Character プロパティ データを生成しません。

ユーザーがどの文字を押したかを判断するために、Figure の CurrentCharacter プロパティをクエリすることもできます。

コンポーネント作成関数。次の値のいずれかとして指定します。

  • 関数ハンドル。

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

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

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

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

作成中のコンポーネント オブジェクトを取得するには、CreateFcn コード内で関数 gcbo を使用します。

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

コンポーネント削除関数。次の値のいずれかとして指定します。

  • 関数ハンドル。

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

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

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

DeleteFcn プロパティは、MATLAB がコンポーネントを削除するときに実行されるコールバック関数を指定します (ユーザーがウィンドウを閉じるときなど)。MATLAB はコンポーネント オブジェクトのプロパティを破棄する前に DeleteFcn コールバックを実行します。DeleteFcn プロパティを指定しない場合、MATLAB は既定の削除関数を実行します。

削除中のコンポーネント オブジェクトを取得するには、DeleteFcn コード内で関数 gcbo を使用します。

コールバック実行制御

すべて展開する

コールバックの割り込み。'on' または 'off'、もしくは数値または logical 1 (true) または 0 (false) として指定します。'on' の値は true と等価であり、'off'false と等価です。したがって、このプロパティの値を logical 値として使用できます。値は matlab.lang.OnOffSwitchState 型の on/off logical 値として格納されます。

Interruptible プロパティは実行中のコールバックが割り込み可能かどうかを決定します。次の 2 つのコールバックの状態について考慮する必要があります。

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

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

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

  • 値が 'on' の場合、他のコールバックがオブジェクトのコールバックに割り込むことができます。drawnowfiguregetframewaitforpause などの、MATLAB が次にキューを処理するポイントで割り込みが発生します。

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

    • 実行中のコールバックにこれらのコマンドが含まれていない場合、MATLAB はそのコールバックの実行を中断せずに終了させます。

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

メモ

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

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

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

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

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

Interruptible プロパティおよび BusyAction プロパティがプログラムの動作に及ぼす影響を示す例は、コールバック実行の中断を参照してください。

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

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

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

割り込みコールバックの割り込み元の BusyAction プロパティは、MATLAB が割り込みコールバックの実行を処理する方法を決定します。BusyAction プロパティは次の値をとります。

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

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

MATLAB がコールバックを呼び出すたびに、そのコールバックは実行中のコールバックに割り込もうとします。コールバックを実行中のオブジェクトの Interruptible プロパティが、割り込み可能かどうかを決定します。Interruptible は次のように設定します。

  • on — MATLAB が次にキューを処理するポイントで割り込みが発生します。これは既定値です。

  • off — 割り込みコールバックを所有するオブジェクトの BusyAction プロパティによって、MATLAB が割り込みコールバックをキューに追加するか無視するかを決定します。

BusyAction プロパティおよび Interruptible プロパティがプログラムの動作に及ぼす影響を示す例は、コールバック実行の中断を参照してください。

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

削除状態。matlab.lang.OnOffSwitchState 型の on/off logical 値として返されます。

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

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

現在のオブジェクトになる能力。'on' または 'off'、もしくは数値または logical 1 (true) または 0 (false) として指定します。'on' の値は true と等価であり、'off'false と等価です。したがって、このプロパティの値を logical 値として使用できます。値は matlab.lang.OnOffSwitchState 型の on/off logical 値として格納されます。

  • 'on' — ユーザーが実行中のアプリでコンポーネントをクリックしたときに、現在のオブジェクトを Table に設定します。関数 Figure および関数 gco の両方の CurrentObject プロパティは、現在のオブジェクトとして Table を返します。

  • 'off' — ユーザーが実行中のアプリでコンポーネントをクリックしたときに、現在のオブジェクトを、HitTest'on' になる Table の最も近い先祖に設定します。

親/子

すべて展開する

親オブジェクト。FigurePanelButtonGroup または Tab オブジェクトとして指定します。UI コンポーネントの作成時に親コンテナーを指定する場合、または既存の UI コンポーネントを別の親コンテナーに移動する場合にこのプロパティを使用します。

Table の子。空の配列として返されます。Table オブジェクトは子をもちません。このプロパティを設定しても効果はありません。

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

このプロパティは、オブジェクトの親がもつ子のリストにおけるそのオブジェクト ハンドルの可視性を制御します。ハンドルがその親オブジェクトのリストで、子として可視できないとき、オブジェクトの階層を検索したり、ハンドルのプロパティをクエリしてハンドルを取得する関数は、ハンドルを返しません。このような関数には getfindobjgcagcfgconewplotclaclf および close があります。HandleVisibility プロパティはまた、親 Figure の CurrentObject プロパティでオブジェクトのハンドルの可視性も制御します。ハンドルは非表示の場合も有効なままです。オブジェクトにアクセスできる場合は、そのプロパティを設定および取得して、それをオブジェクトに作用する任意の関数に渡すことができます。

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

グラフィックス ルートの ShowHiddenHandles プロパティを 'on' に設定すると、HandleVisibility の値にかかわらず、すべてのハンドルを可視にできます。この設定は、HandleVisibility 値には影響しません。

識別子

すべて展開する

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

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

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

ユーザー データ。任意の配列として指定します。UserData を指定すると、アプリ内でデータを共有するのに役立ちます。詳細については、コールバック間のデータ共有を参照してください。

互換性についての考慮事項

すべて展開する

R2020a 以降は非推奨

R2008a で導入