guidata

Сохраните или получите данные пользовательского интерфейса

Синтаксис

guidata (object_handle, данные)
данные = guidata (object_handle)

Описание

guidata(object_handle,data) хранит переменный data объектом, заданным object_handle. Если object_handle не является фигурой, то родительская фигура объекта используется. data может быть любой переменной MATLAB®, но обычно является структурой, которая позволяет вам добавить новые поля как требуется.

guidata может управлять только одной переменной в любое время. Последующие вызовы guidata(object_handle,data) перезаписывают ранее сохраненный data.

Использование GUIDE guidata

GUIDE использует guidata, чтобы сохранить и поддержать структуру handles. В файле кода GUIDE не перезаписывайте структуру handles, или ваша программа больше не будет работать. Если необходимо хранить другие данные, можно сделать так путем добавления новых полей к структуре handles.

data = guidata(object_handle) возвращает ранее хранившие данные или пустую матрицу, если ничто не сохранено.

Изменить данные, управляемые guidata:

  1. Получите копию данных с командой data = guidata(object_handle).

  2. Внесите желаемые изменения в data.

  3. Сохраните измененную версию data с командой guidata(object_handle,data).

guidata предоставляет разработчикам приложений удобный интерфейс к данным приложения фигуры:

  • Вы не должны создать и поддержать трудно закодированное имя свойства данных приложения всюду по вашему исходному коду.

  • Можно получить доступ к данным из стандартной программы обратного вызова локальной функции использование указателя компонента (который возвращен gcbo), не будучи должен найти указатель фигуры.

Если вы не используете GUIDE, guidata особенно полезен в сочетании с guihandles, который создает структуру, содержащую все компоненты в пользовательском интерфейсе.

Примеры

Этот пример вызывает guidata, чтобы сохранить структуру, содержащую данные приложения фигуры из раздела инициализации файла кода приложения. Первый раздел показывает, как сделать это в программируемом пользовательском интерфейсе. Второй раздел показывает, как код отличается, когда вы используете GUIDE, чтобы создать файл шаблона кода. GUIDE обеспечивает структуру handles в качестве аргумента ко всем обратным вызовам локальной функции, таким образом, вы не должны вызывать guidata, чтобы получить его. Действительно, однако, необходимо вызвать guidata, чтобы сохранить изменения, которые вы вносите в структуру.

Используя guidata в Программируемом пользовательском интерфейсе

Вызывание функции guihandles создает структуру, в которую ваш код помещает дополнительные данные. Это содержит все указатели, используемые фигурой в то время, когда это называется, генерируя имена полей на основе свойства Tag каждого объекта.

% Create figure
figure_handle = figure('Toolbar','none');
% create structure of handles
myhandles = guihandles(figure_handle); 
% Add some additional data as a new field called numberOfErrors
myhandles.numberOfErrors = 0; 
% Save the structure
guidata(figure_handle,myhandles) 

Можно вспомнить данные из локальной функции обратного вызова, изменить ее, и затем заменить структуру в фигуре:

function My_Callback()
% ...
% Get the structure using guidata in the local function
myhandles = guidata(gcbo);
% Modify the value of your counter
myhandles.numberOfErrors = myhandles.numberOfErrors + 1;
% Save the change you made to the structure
guidata(gcbo,myhandles) 

Используя guidata в GUIDE

При использовании GUIDE, вы не должны вызывать guihandles, чтобы создать структуру. Можно добавить собственные данные к структуре handles. Например, этот код добавляет поле, numberOfErrors, к структуре:

% --- Executes just before simple_gui_tab is made visible.
function my_GUIDE_GUI_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
% varargin   command line arguments to simple_gui_tab (see VARARGIN)
% ...

% add some additional data as a new field called numberOfErrors
handles.numberOfErrors = 0;
% Save the change you made to the structure
guidata(hObject,handles)
Заметьте, что вы используете входной параметр hObject вместо gcbo, чтобы относиться к объекту, обратный вызов которого выполняется.

Предположим, что необходимо было получить доступ к полю numberOfErrors в обратном вызове кнопки. Ваш код обратного вызова теперь выглядит примерно так:

% --- Executes on button press in pushbutton1.
function my_GUIDE_GUI_pushbutton1_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
% ...

% No need to call guidata to obtain a structure;
% it is provided by GUIDE via the handles argument
handles.numberOfErrors = handles.numberOfErrors + 1;
% save the changes to the structure
guidata(hObject,handles)

Смотрите также

| | |

Представлено до R2006a

Была ли эта тема полезной?