Main Content

uigetpref

ユーザー基本設定に応じて開くダイアログ ボックスの作成

説明

pval = uigetpref(group,pref,title,quest,pbtns) は、指定されたグループ名および基本設定名を使用して開く非モーダル ダイアログ ボックスを作成します。グループ名および基本設定名を組み合わせることで、ダイアログ ボックスが一意に特定されます。ダイアログ ボックスには以下が含まれます。

  • 指定された質問 (quest) およびダイアログ ボックスのユーザーがその質問に回答できるようにするための 1 つ以上のボタン (pbtns)。クリックされたボタンの値は pval として返されます。

  • 既定では [次回からこのダイアログを表示しない] というラベルのチェック ボックス。

ユーザーがチェック ボックスをオンにすると、MATLAB® は、クリックされたボタンの値を基本設定値 (pval) として格納して返します。同じダイアログ ボックスのその後の uigetpref の呼び出しでは、基本設定値が格納されたことを検出し、ダイアログ ボックスを開かずにその選択を適用します。

ユーザーがチェック ボックスをオフにすると、MATLAB ではクリックされたボタンの値が返されますが、格納されません。代わりに、MATLAB は値 'ask' を格納します。MATLAB は、その後の uigetpref への呼び出しで指定されたダイアログ ボックスを開きます。

[pval,tf] = uigetpref(group,pref,title,quest,pbtns) は、ダイアログ ボックスが開かれたかどうかを示す論理値を返します。ダイアログ ボックスが開かれた場合、tf の値は 1 (true) です。そうでない場合、tf の値は 0 (false) です。

[___] = uigetpref(___,Name,Value) は、次のいずれかを行うことができるようにする、1 つ以上のオプションの名前と値のペアを指定します。

  • チェック ボックスのラベルのカスタマイズ。

  • ダイアログ ボックスを開いたときにチェック ボックスが選択されているかどうかの指定。

  • [ヘルプ] ボタンおよび [ヘルプ] ボタンのコールバックの提供。

  • 基本設定値にマッピングされていないボタンの特定。

  • ユーザーが基本設定ボタンをクリックせずにダイアログ ボックスを閉じるときに uigetprefpval に返す値の指定。たとえば、この値が返されるのはユーザーがダイアログ ボックスの閉じるボタン (X) をクリックする場合、キーボードの Esc キーを押す場合または基本設定値にマッピングされていないボタンをクリックする場合です。

このオプションは、前述の構文にある任意の出力引数の組み合わせで使用します。

すべて折りたたむ

必要な uigetpref 入力引数をそれぞれ定義し、それらを uigetpref に渡します。

group = 'Updates';
pref =  'Conversion';
title = 'Converting';
quest = {'Are you sure you want to convert this code?',...
         'Conversions cannot be undone.'};
pbtns = {'Yes','No'};

[pval,tf] = uigetpref(group,pref,title,quest,pbtns)

[はい] をクリックします。MATLAB コマンド ウィンドウには、pval の値は 'yes' であり、tf の値は 1 であると表示され、ダイアログ ボックスが表示されたことを示します。

uigetpref コマンドを再度実行しますが、今回は [次回からこのダイアログを表示しない] を選択してから [いいえ] をクリックします。

[pval,tf] = uigetpref(group,pref,title,quest,pbtns)

MATLAB コマンド ウィンドウには、pval の値は 'no' であり、tf の値は 1 であると表示されます。

uigetpref コマンドを再度実行します。

[pval,tf] = uigetpref(group,pref,title,quest,pbtns)

予想どおり、ダイアログ ボックスは表示されません。MATLAB コマンド ウィンドウには、pval の値は 'no' であり、tf の値は 0 であると表示されます。

基本設定値を 'ask' に設定して、ダイアログ ボックスの表示を再度有効にします。

setpref('Updates','Conversion','ask');

uigetpref コマンドを再度実行します。ダイアログ ボックスが開きます。

[pval,tf] = uigetpref(group,pref,title,quest,pbtns)

'ExtraOptions','Cancel' を名前と値のペアとして指定して、[Cancel] ボタンをダイアログ ボックスに追加します。ユーザーが [Cancel] をクリックすると、MATLAB はボタン ラベルを pval に返します。

group = 'Updates';
pref =  'Conversion';
title = 'Converting';
quest = {'Are you sure you want to convert this code?',...
         'Conversions cannot be undone.'};
pbtns = {'Yes','No'};
[pval] = uigetpref(group,pref,title,quest,pbtns,...
'ExtraOptions','Cancel');

基本設定のダイアログ ボックスを作成する関数を作成します。ダイアログ ボックスは、ユーザーに Figure を閉じる前に保存するように求めます。ユーザーがクリックするボタンの値に基づいて、関数は [保存] ダイアログ ボックスを開くか、Figure を保存せずに閉じます。

function savefigconditionally
fig = gcf;

group ='mygraphics';
pref = 'savefigbeforeclosing';
title = 'Closing Figure';
quest = {'Do you want to save your figure before closing?'
         ''
         'If you do not save the figure, all changes will be lost'};
pbtns = {'Yes','No'};
[pval,tf] = uigetpref(group,pref,title,quest,pbtns);

switch pval
    case 'yes'  
    [file,path,indx] = uiputfile('fig', ...
                                  'Save current figure', ...
                                  'untitled.fig');
       if indx == 0    
           delete(fig);
       else                   
           saveas(fig,[path,file])
           delete(fig);
       end
   case 'no'               
       delete(fig);
       return
 end

この例を実行するには、新しいプログラム ファイルにこのコードをコピーして貼り付けます。ファイル名を savefigconditionally.m とし、検索パスに保存します。関数を CloseRequestFcn コールバックとして使用するため、Figure を作成し、オプションで何らかのデータをプロットします。

figure('CloseRequestFcn','savefigconditionally');
x = [1 2 3 4 5];
y = [10 50 25 75 25];
plot(x,y);
前述のコマンドのブロックを実行して、Figure のタイトル バーの閉じるボタン (X) をクリックするたびに、ダイアログ ボックスが開きますが、[次回からこのダイアログを表示しない] を選択している場合は例外となります。

入力引数

すべて折りたたむ

基本設定グループ名。文字ベクトルまたは string スカラーとして指定します。グループには、pref 入力引数によって指定された基本設定が含まれます。グループが存在しない場合、MATLAB はそれを作成します。

例: 'My Graphics'

基本設定名。文字ベクトルまたは string スカラーとして指定します。

この基本設定は、指定された pbtns の範囲内のユーザーがクリックするボタンの値を格納します。基本設定名が存在しない場合は MATLAB が作成します。

例: 'Save Graphic'

ダイアログ ボックスのタイトル。文字ベクトルまたは string スカラーとして指定します。

例: 'Save preference'

ダイアログ ボックスの質問。文字ベクトル、文字ベクトルの cell 配列または string 配列として指定します。次のように質問のテキスト内に改行が発生します。

  • 質問が文字ベクトルとして指定されている場合、改行は縦棒 (|) 文字または関数 newline で指定された改行文字の後に発生します。

  • 質問が文字ベクトルの cell 配列として指定されている場合は、改行は各 cell 配列要素の後に発生します。

例: {'Are you sure you want to convert this code?', 'Conversions cannot be undone.'}

例: 'Do you want to save this file before closing?'

基本設定ボタンのラベル。文字ベクトル、文字ベクトルの cell 配列、縦棒で区切られた文字ベクトルまたは string 配列として指定します。

ボタンのラベルと異なる内部の基本設定値を指定する場合、pbtns 値を 2 行 n 列の cell 配列または string 配列として指定します。1 行目には基本設定名、2 行目には関連付けられたボタンのラベルが格納されます。たとえば、さまざまな言語向けにダイアログ ボックスをローカライズする計画がある場合に、このアプローチの使用について考えます。ローカライズごとにコード ロジック (たとえば、switch および case ステートメント) を変更せずに、外国語を使用してボタンのラベルを指定できます。

pbtns が 2 行 n 列の cell 配列ではない場合、MATLAB は、ラベル名を基本設定値として格納します。

例: 'Yes'

例: {'Yes','No'}

例: ['Yes|No']

例: {'Oui','Non';'yes','no'} は、ボタンのラベルを 'Oui' および 'Non' に設定して、それらの対応する基本設定値を 'yes' および 'no' に設定します。

名前と値の引数

引数のオプションのペアを Name1=Value1,...,NameN=ValueN として指定します。ここで Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後になければなりませんが、ペアの順序は重要ではありません。

R2021a より前では、コンマを使用してそれぞれの名前と値を区切り、Name を引用符で囲みます。

例: line(x,y,'Color','red','LineWidth',3) は幅が 3 ポイントの赤色のラインを作成します。

例: 'CheckboxSting','Do not ask again.'

ダイアログ ボックスを開いたときのチェック ボックスの初期状態。'CheckboxState' および 10true または false で構成されるコンマ区切りのペアとして指定します。

  • 値が true または 1 の場合、チェック ボックスはオンになる

  • 値が false または 0 の場合、チェック ボックスはオフになる

例: 'CheckboxState',0

チェック ボックスのラベル。'CheckboxString' と、文字ベクトルまたは string スカラーで構成されるコンマ区切りのペアとして指定します。

[ヘルプ] ボタンのラベル。'Help' と、文字ベクトルまたは string スカラーから構成されるコンマ区切りのペアとして指定します。この名前と値のペアを指定しない場合、[ヘルプ] ボタンはダイアログ ボックスに表示されません。この名前と値のペアを指定するが HelpFcn の名前と値のペアを指定しない場合、MATLAB は既定で 'HelpFcn','doc(uigetpref)' を使用します。

例: 'HelpString','Info'

[ヘルプ] ボタンのコールバック。'HelpFcn' と、関数ハンドル、string 配列または文字ベクトル (非推奨) から構成されるコンマ区切りのペアとして指定します。ユーザーが [ヘルプ] ボタンをクリックすると、コールバックが実行されます。この名前と値のペアを指定する場合、'HelpString' の名前と値のペアも指定しなければなりません。

プログラムで作成したアプリ用のコールバックの記述も参照してください。

例: 'HelpFcn',@myfunc は、HelpFcn コールバック関数を関数ハンドルとして指定します。

追加のボタンのラベル。'ExtraOptions' および文字ベクトル、文字ベクトルの cell 配列または string 配列で構成されるコンマ区切りのペアとして指定します。この追加のボタンは、どの基本設定にもマップされません。ユーザーがこれらのボタンのいずれかをクリックする場合、ダイアログ ボックスが閉じて、ボタン ラベルが出力引数 pval として返されます。

例: 'ExtraOptions','Cancel'

既定のボタンの選択。'DefaultButton' と文字ベクトルまたは string スカラーで構成されるコンマ区切りのペアとして指定します。ユーザーがどのボタンもクリックせずにダイアログ ボックスを閉じる場合、既定のボタンの選択が p に返されます。この値はどの基本設定ボタンにも、ExtraOption ボタンにも対応する必要はありません。

例: 'nobtn'

出力引数

すべて折りたたむ

string スカラーとして返される選択された基本設定ボタン。返される値は次のいずれかです。

  • クリックされた基本設定ボタンのラベル (pbtns)

  • クリックされた基本設定ボタンの内部値

true または false の結果。1 または 0 として返されます。ダイアログ ボックスが開かれた場合、関数は 1 (true) を返します。その他の場合は 0 を返します。この値は、ダイアログ ボックスが最後に開かれてユーザーがチェック ボックス (ラベルは、既定では [次回からこのダイアログを表示しない]) を選択したときに格納されたチェック ボックスの選択に対応します。

詳細

すべて折りたたむ

非モーダル ダイアログ ボックス

非モーダル ダイアログ ボックスでは、非モーダル ダイアログ ボックスに応答する前に他の MATLAB ウィンドウを操作できます。非モーダル ダイアログ ボックスはノーマル ダイアログ ボックスとも呼ばれます。

基本設定

基本設定により、アプリケーションの動作とユーザーがアプリケーションと対話する方法を指定することができます。基本設定はセッション全体で有効のままであり、基本設定データベースに保存されます。

関数 uigetpref は、MATLAB の組み込み製品と同じ基本設定データベースを使用します。しかし、関数 uigetpref は、基本設定を独立したリストとして登録します。これは、この関数以外に関数 uisetpref もこの基本設定を管理できるようにするためです。

uigetpref で登録された基本設定を変更するには、uisetpref または setpref を使用します。たとえば、基本設定値を 'ask' に変更するには setpref を使用します。

ヒント

  • uigetpref は指定されたグループと基本設定がまだ存在しない場合、それらを作成します。不要になった基本設定グループを削除するには、rmpref を使用してください。

  • 以前に作成されたグループおよび基本設定の構造体を取得するには、関数 getpref を使用します。

  • ユーザーがチェック ボックス [次回からこのダイアログを表示しない] をオンにした後にダイアログ ボックスを閉じると、同じグループおよび基本設定ではダイアログ ボックスは二度と開かれなくなります。非表示とされたダイアログ ボックスを再度有効にするには、setpref を使用して基本設定値を 'ask' に設定します。

  • ダイアログ ボックスのユーザーには、ダイアログ ボックスの作成時に指定されたグループ名および基本設定名がわかりません。したがって、基本設定によって非表示とされたダイアログ ボックスを再度有効にするために、ユーザーは uisetpref コマンドを呼び出すことができます。

    uisetpref('clearall')
    このように uisetpref を実行すると、最近のものだけでなく uigetpref を使用して定義された "すべて" の基本設定が再度有効になります。

バージョン履歴

R2006a より前に導入