Этот пример использует управление ActiveX® Shell.Explorer
, который представлен приложением Microsoft® Internet Explorer®, чтобы включать средство просмотра HTML в фигуру MATLAB®. Кнопка окна фигуры вниз функционирует, затем используется, чтобы выбрать графический объект, когда пользователь кликает по графику, и загрузите документацию свойства объекта в средство просмотра HTML.
Используя Internet Explorer из клиентской программы ActiveX.
Определение кнопки окна вниз функционирует, который отображает документацию свойства HTML для любого объекта пользовательские нажатия кнопки.
Определение resize
функционирует для фигуры, которая также изменяет размер контейнера объекта ActiveX.
Этот пример создает большее, чем нормальное окно фигуры, которое содержит объект осей и средство просмотра HTML на более низкой части окна фигуры. По умолчанию средство просмотра отображает https://www.mathworks.com
URL cOM. Когда вы даете команду графического изображения, такую как:
surfc(peaks(20))
график отображается в осях.
Щелкните где угодно в графике, чтобы видеть документацию свойства для выбранного объекта.
Можно открыть файл, который реализует этот пример в редакторе MATLAB, или можно запустить этот пример со следующими ссылками:
Этот пример задает размер фигуры на основе размера фигуры по умолчанию и добавляет пробел для элемента управления ActiveX. Вот код, чтобы задать фигуру:
dfpos = get(0,'DefaultFigurePosition'); hfig = figure('Position',dfpos([1 2 3 4]).*[.8 .2 1 1.65],... 'Menu','none','Name','Create a plot and click on an object',... 'ResizeFcn',@reSize,... 'WindowButtonDownFcn',@wbdf,... 'Renderer','Opengl');
Обратите внимание на то, что фигура также задает изменить размер функцию, и кнопка окна вниз функционируют путем присвоения указателей на функцию свойствам ResizeFcn
и WindowButtonDownFcn
. Функции обратного вызова reSize
и wbdf
заданы как вложенные функции в том же файле.
Функция actxcontrol
создает элемент управления ActiveX в заданной фигуре и возвращает указатель управления. Необходимо предоставить следующую информацию:
Программируемый идентификатор управления (используют actxcontrollist
, чтобы найти его),
Местоположение и размер контейнера управления в фигуре (пиксели) [высота ширины левой нижней части]
Указатель фигуры, которая содержит управление:
% Calculate the container size conSize = calcSize; % Create the control hExp = actxcontrol('Shell.Explorer.2',conSize,hfig); % Specify content of html viewer Navigate(hExp,'https://www.mathworks.com/');
Вложенная функция, calcSize
вычисляет размер контейнера объекта на основе текущего размера фигуры. calcSize
также используется фигурой функция resize
, которая описана в следующем разделе.
function conSize = calcSize fp = get(hfig,'Position'); % Get current figure size conSize = [0 0 1 .45].*fp([3 4 3 4]); % Calculate container size end % calcSize
В MATLAB можно изменить размер фигуры, и оси автоматически изменяют размер, чтобы соответствовать новому размеру. Этот пример реализует подобное поведение изменения размеров для контейнера объекта ActiveX в фигуре, использующей метод move
объекта. Этот метод позволяет вам изменить и размер и местоположение контейнера объекта ActiveX (i. e., это эквивалентно установке фигуры свойство Position
).
Когда вы изменяете размер окна фигуры, программное обеспечение MATLAB автоматически вызывает функцию, присвоенную свойству ResizeFcn
фигуры. Этот пример реализует вложенную функцию reSize
для фигуры функция reSize
.
Функция resize
сначала определяет, существует ли объект ActiveX, потому что программное обеспечение MATLAB вызывает фигуру функция resize
, когда фигура сначала создается. Поскольку объект ActiveX не был создан в этой точке, функция resize
просто возвращается.
Когда вы изменяете размер фигуры, функция resize
выполняет и делает следующее:
Вызывает функцию calcSize
, чтобы вычислить новый размер для контейнера управления на основе нового размера фигуры.
Вызывает метод move
управления, чтобы применить новый размер к управлению.
function reSize(~,~) if ~exist('hExp','var') return end conSize = calcSize; move(hExp,conSize); end % reSize
Этот пример использует фигуру свойство WindowButtonDownFcn
задать функцию обратного вызова, которая обрабатывает события нажатия мыши в фигуре. Когда вы щелкаете левой кнопкой мыши, в то время как курсор по фигуре, программное обеспечение MATLAB выполняет обратный вызов WindowButtonDownFcn
на мыши вниз событие.
Обратный вызов определяет, по какому объекту кликнули путем запроса фигуры свойство CurrentObject
, которое содержит указатель графического объекта, по которому последний раз кликают. Если у вас есть указатель объекта, можно определить его тип и затем загрузить соответствующую страницу HTML в управление Shell.Explorer
.
Вложенная функция wbdf
реализует обратный вызов. Если это определяет тип выбранного объекта, это использует управление метод Navigate
, чтобы отобразить документацию для типа объекта.
function wbdf(~,~) cobj = get(hfig,'CurrentObject'); if isempty(cobj) disp('Click somewhere else') return end pth = 'https://www.mathworks.com/help/techdoc/ref/'; typ = get(cobj,'Type'); switch typ case ('figure') Navigate(hExp,[pth,'figure_properties.html']); case ('axes') Navigate(hExp,[pth,'axes_properties.html']); case ('line') Navigate(hExp,[pth,'chartline_properties.html']); case ('image') Navigate(hExp,[pth,'image_properties.html']); case ('patch') Navigate(hExp,[pth,'patch_properties.html']); case ('surface') Navigate(hExp,[pth,'chartsurface_properties.html']); case ('text') Navigate(hExp,[pth,'text_properties.html']); case ('hggroup') Navigate(hExp,[pth,'group_properties.html']); otherwise Navigate(hExp,[pth(1:end-4),'graphics-object-properties.html']); end end % wbdf