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)

Preferences dialog box with custom title and body text. The dialog box also has a check box with the text "Do not show this dialog again." and two buttons, "Yes" and "No".

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

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

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

Preferences dialog box. The check box is selected, and the mouse cursor is over the "No" button.

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)

Preferences dialog box

名前と値の引数 "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");

Preferences dialog box with custom title and body text. The dialog box also has a check box with the text "Do not show this dialog again." and three buttons, "Yes", "No", and "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
 end

この例を実行するには、新しいプログラム ファイルにこのコードをコピーして貼り付けます。ファイル名を savefigconditionally.m とし、検索パスに保存します。Figure を閉じるときに関数を実行するには、Figure の CloseRequestFcn コールバックとして指定します。たとえば、Figure を作成し、データをいくつかプロットします。

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

Preferences dialog box with custom title and body text. The dialog box also has a check box with the text "Do not show this dialog again." and two buttons, "Yes" and "No".

入力引数

すべて折りたたむ

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

例: "My Graphics"

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

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

例: "Save Graphic"

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

例: "Save preference"

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

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

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

例: ["Are you sure you want to convert this code?", "Conversions cannot be undone."]

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

基本設定ボタンのラベル。string スカラー、string 配列、文字ベクトル、または文字ベクトルの cell 配列として指定します。

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

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

例: "Yes"

例: ["Yes","No"]

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

名前と値の引数

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

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

例: uigetpref(group,pref,title,quest,pbtns,"CheckboxState",1) は、チェック ボックスが初期状態でオンになった基本設定のダイアログ ボックスを作成します。

例: "Do not ask again."

uigetpref(group,pref,title,quest,pbtns,CheckboxState=1) は、チェック ボックスが初期状態でオンになった基本設定のダイアログ ボックスを作成します。

ダイアログ ボックスを開いたときのチェック ボックスの初期状態。10true、または false として指定します。

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

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

チェック ボックスのラベル。string スカラーまたは文字ベクトルとして指定します。

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

例: "Info"

[ヘルプ] ボタンのコールバック。関数ハンドル、string スカラー、または文字ベクトル (非推奨) として指定します。ユーザーが [ヘルプ] ボタンをクリックすると、コールバックが実行されます。この名前と値の引数を指定する場合、名前と値の引数 HelpString も指定しなければなりません。

コールバックの詳細については、プログラムで作成したアプリ用のコールバックの作成を参照してください。

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

例: "Cancel"

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

例: "nobtn"

出力引数

すべて折りたたむ

選択された基本設定ボタン。文字ベクトルとして返されます。返される値は次のいずれかです。

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

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

true または false の結果。1 または 0 として返されます。ダイアログ ボックスが開かれた場合、関数は 1 (true) を返します。それ以外の場合は 0 (false) を返します。この値は、ダイアログ ボックスが最後に開かれたときに [次回からこのダイアログを表示しない] チェック ボックスがオンだったかどうかに対応します。

詳細

すべて折りたたむ

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

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

基本設定

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

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

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

ヒント

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

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

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

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

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

バージョン履歴

R2006a より前に導入