GUIDE の対話型リスト ボックスのアプリ
メモ
GUIDE 環境は将来のリリースで削除される予定です。既存の GUIDE アプリは、GUIDE が削除された後も引き続き MATLAB® で動作しますが、GUIDE での編集はできません。
既存の GUIDE アプリを引き続き編集するには、将来の MATLAB リリースとの互換性維持に役立つ方法について、GUIDE の移行策を参照してください。新しいアプリを対話的に作成する場合は、代わりにApp Designer を使用したアプリ開発を参照してください。
この例では、プリビルドの GUIDE アプリを確認および実行する方法を説明します。このアプリには、特定のフォルダー内のファイルを表示するリスト ボックスが含まれます。リスト内の項目をダブルクリックすると、MATLAB で項目が開きます。
例を開いて実行
GUIDE でアプリを開き、[Figure を実行] (緑色の再生ボタン) をクリックして実行します。
あるいは、名前と値のペアの引数 'dir'
を使用して、コマンド ウィンドウで関数 lbox2
を呼び出すことができます。名前と値のペアの引数により、任意のフォルダーの内容をリストできます。たとえば、次のコマンドでは Windows® システムの C:\ フォルダーにあるファイルがリストされます。
lbox2('dir','C:\')
メモ: コマンド ウィンドウで lbox2
を呼び出す前に、MATLAB® パス上のフォルダーに GUIDE ファイルを保存しなければなりません。ファイルを保存するには、GUIDE で [ファイル]、[名前を付けて保存] を選択します。
レイアウトとコールバック コードの確認
GUIDE で、[エディター] ボタン をクリックしてコードを表示します。
エディター ウィンドウの上部付近で、 [移動] ボタンを使用して、以下で説明する関数に移動します。
lbox2_OpeningFcn
コールバック関数 lbox2_OpeningFcn
は、リスト ボックスがはじめて UI に表示される直前に実行されます。次のステートメントは、関数 lbox2
へのパス引数が指定されたかどうかを判定します。
if nargin == 3, initial_dir = pwd; elseif nargin > 4 if strcmpi(varargin{1},'dir') if exist(varargin{2},'dir') initial_dir = varargin{2}; else errordlg('Input must be a valid directory','Input Argument Error!') return end else errordlg('Unrecognized input argument','Input Argument Error!'); return; end end
nargin==3
の場合、lbox2_OpeningFcn
の入力引数は hObject
、eventdata
および handles
のみです。したがって、lbox2
の呼び出し時にパスが指定されなかったため、リスト ボックスには現在のフォルダーの内容が表示されます。nargin>4
の場合、varargin
入力引数には 2 つの追加項目 (パスが指定されたことを示す) が含まれます。したがって、以降の if
ステートメントではパスが有効かどうかを確認します。listbox1_callback
リスト ボックス項目をクリックすると、コールバック関数 listbox1_callback
が実行されます。関数の開始部分付近にあるこのステートメントは、リスト ボックスの項目をダブルクリックするたびに true
を返します。
if strcmp(get(handles.figure1,'SelectionType'),'open')
true
の場合、listbox1_callback
は、次のように選択されたリスト ボックス項目を特定します。index_selected = get(handles.listbox1,'Value'); file_list = get(handles.listbox1,'String'); filename = file_list{index_selected};
if handles.is_dir(handles.sorted_index(index_selected)) cd (filename) load_listbox(pwd,handles) else [path,name,ext] = fileparts(filename); switch ext case '.fig' guide (filename) otherwise try open(filename) catch ex errordlg(... ex.getReport('basic'),'File Type Error','modal') end end end