Этот пример показывает, как исследовать и запустить предварительно созданное приложение GUIDE. Приложение содержит поле списка, которое отображает файлы в конкретной папке. Когда вы дважды кликаете элемент в списке, MATLAB® открывает элемент.
Откройте приложение в GUIDE и нажмите Run Figure (зеленая кнопка воспроизведения), чтобы запустить его.
Также можно вызвать функцию lbox2
в Командном окне с аргументом в виде пар "имя-значение" 'dir'
. Аргумент в виде пар "имя-значение" позволяет вам перечислять содержимое любой папки. Например, это списки команд файлы в папке C:\ в системе Windows®:
lbox2('dir','C:\')
Примечание: Прежде чем можно будет вызвать lbox2
в Командном окне, необходимо сохранить файлы GUIDE в папке на пути MATLAB®. Чтобы сохранить файлы, выберите File> Save As in GUIDE.
В GUIDE нажмите кнопку Editor, чтобы просмотреть код.
Около верхней части окна Editor используйте кнопку Go To, чтобы перейти к функциям, обсужденным ниже.
lbox2_OpeningFcn
Функция обратного вызова, которую lbox2_OpeningFcn
выполняет незадолго до поля списка, появляется в пользовательском интерфейсе впервые. Следующие операторы определяют, задал ли пользователь параметр пути к функции 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
содержит два дополнительных элемента (предполагающий, что пользователь действительно задавал путь). Таким образом, последующая проверка операторов 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