欢迎光临散文网 会员登陆 & 注册

2020-12-03 MATLAB App Designer—关于鼠标右键的功能开发(1)

2020-12-03 03:23 作者:-何其-  | 我要投稿

背景

在开发app的时候,想判断某项目下设定好的路径信息是否存在,如果存在则该路径对应的鼠标右键选项可用,否则为不可用。

右键——路径

鼠标右键生成

首先采用uimenu生成‘路径’,在利用uimenu生成'路径:原始数据','路径:解压数据','路径:统计数据'等三个鼠标右键(作为前者的Children)

函数

对此种情况研究出一个较为通用的Enable判断函数,亦可推广到鼠标右键的Enble的控制


  function [ Message ] = ifun_SetMenuEnable4Path(~,Handle,CurrentPathData)

            % 设置路径右键的有效性 % 可针对单个路径信息进行判断,亦可对整体路径信息进行判断

            % 当对整体判断时要求

            % app % 输入数据时必须输入 app

            % Handle % 路径右键句柄

            % CurrentPathData % 当前项目路径信息

            Num_Menu_Children = length(Handle.Children);

            if Num_Menu_Children  > 1  % 设置整个路径右键(Parent、Children)有效性

                arrayfun(@(x)ifun_SetMenuEnable4Path_Single(Handle.Children(x),CurrentPathData), ...

                    linspace(1,Num_Menu_Children,Num_Menu_Children),'Un',false); % 设置Children的Enable

                set(Handle,'Enable',max(cell2mat(arrayfun(@(x)Handle.Children(x).Enable=='on',... % 根据子右键确定父右键是否可用

                    linspace(1,Num_Menu_Children,Num_Menu_Children),'Un',false))));

                Message = 1;

            elseif Num_Menu_Children  == 0 % 设置单个路径右键的有效性

                [ Message ] = ifun_SetMenuEnable4Path_Single(Handle,CurrentPathData);

            else;Message = 'ifun_SetMenuEnable4Path的输入参数数量错误';disp(Message);

            end

            %%% 附属函数

            function [ Message ] = ifun_SetMenuEnable4Path_Single(Menu_Path,CurrentPathData)

                try

                    Menu_Path_Enable = 'off'; % 预设不可用

                    switch Menu_Path.Label % 根据Parent循环判断其children的Enable % 仅针对一个项目

                        case '路径:原始数据' %

                            if isfolder(CurrentPathData.RawDataPath)==1;Menu_Path_Enable = 'on';end

                        case '路径:解压数据'

                            if isfolder(CurrentPathData.UnzipDataPath)==1;Menu_Path_Enable = 'on';end

                        case '路径:统计数据' % 统计特征值存放地址

                            if isfolder(CurrentPathData.FeaturePath)==1;Menu_Path_Enable = 'on';end

                        case '路径:结果数据' % 特征值分析数据存放地址

                            if isfolder(CurrentPathData.ResultPath)==1;Menu_Path_Enable = 'on';end

                    end

                    set(Menu_Path,'Enable',Menu_Path_Enable);Message =1;

                catch;Message = 'Label输入错误';disp(Message);

                end

            end

        end


函数使用说明

(1)当输入函数ifun_SetMenuEnable4Path的Handle(右键句柄)含有Children时,首先判断其Children的Enable,在根据Children的Enable取最大值赋值给Handle的Enable

(2)当输入函数ifun_SetMenuEnable4Path的Handle(右键句柄)不含有Children时,则仅判断该句柄所对应的Enable属性

鼠标右键控件的Enable属性根据其回调结果来控制


2020-12-03 MATLAB App Designer—关于鼠标右键的功能开发(1)的评论 (共 条)

分享到微博请遵守国家法律