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

【MATLAB App Desinger】uitable的控件进行单行的上下移动

2021-10-29 08:55 作者:-何其-  | 我要投稿

背景

想实现对选中的单行(如第五行)进行上下移动

需要移动的指定单行

实现要点

(1)调用uitable控件的Selection属性

(2)表格数据分层四部分,如对于上移来说;第一部分为上部不动部分,即1:3行;第二部分为下移部分,即为第3行;第三部分为上移部分,即为第4行;第四部分为下部不动部分,即6:8行;主要操作为第二部分和第三部分互换。

实现代码

% 上移行

 if ~isempty( TableHandle.Selection )

                            ID = unique(TableHandle.Selection(:,1));

                            for ii = 1 : length(ID)

                                if ID(ii)-2 > 0

                                    CurrentTableData_UP = TableHandle.Data(1:ID(ii,1)-2,:);

                                else;CurrentTableData_UP = [];

                                end

                                CurrentTableData_Move = TableHandle.Data(ID(ii,1)-1,:);

                                CurrentTableData_Middle = TableHandle.Data(ID(ii,1),:);

                                if ID(ii)+1 <= height(TableHandle.Data)

                                    CurrentTableData_Down = TableHandle.Data(ID(ii,1)+1:end,:);

                                else;CurrentTableData_Down = [];

                                end

                                if ~isempty(CurrentTableData_UP)

                                    TableHandle.Data = vertcat(CurrentTableData_UP,CurrentTableData_Middle);

                                else;TableHandle.Data = CurrentTableData_Middle;

                                end

                                TableHandle.Data = vertcat(TableHandle.Data ,CurrentTableData_Move);

                                if ~isempty(CurrentTableData_Down)

                                    TableHandle.Data = vertcat(TableHandle.Data,CurrentTableData_Down);

                                end

                            end

                            removeStyle(TableHandle);

                            TableHandle.Selection = horzcat(ID-1,ones(length(ID),1));

                            addStyle(TableHandle,uistyle('BackgroundColor','green'),'row',TableHandle.Selection(:,1));

                        end


上移效果


下移行

if ~isempty( TableHandle.Selection )

                            ID = unique(TableHandle.Selection(:,1));

                            for ii = 1 : length(ID)

                                if ID(ii,1)-1 > 0

                                    CurrentTableData_UP = TableHandle.Data(1:ID(ii,1)-1,:);

                                else;CurrentTableData_UP = [];

                                end

                                CurrentTableData_Middle = TableHandle.Data(ID(ii,1),:);

                                CurrentTableData_Move = TableHandle.Data(ID(ii,1)+1,:);

                                if ID(ii)+2 <= height(TableHandle.Data)

                                    CurrentTableData_Down = TableHandle.Data(ID(ii,1)+2:end,:);

                                else;CurrentTableData_Down = [];

                                end

                                if ~isempty(CurrentTableData_UP)

                                    TableHandle.Data = vertcat(CurrentTableData_UP,CurrentTableData_Move);

                                else;TableHandle.Data = CurrentTableData_Move;

                                end

                                TableHandle.Data = vertcat(TableHandle.Data ,CurrentTableData_Middle);

                                if ~isempty(CurrentTableData_Down)

                                    TableHandle.Data = vertcat(TableHandle.Data,CurrentTableData_Down);

                                end

                            end

                            removeStyle(TableHandle);

                            TableHandle.Selection = horzcat(ID+1,ones(length(ID),1));

                            addStyle(TableHandle,uistyle('BackgroundColor','green'),'row',TableHandle.Selection(:,1));

                        end

下移效果


【MATLAB App Desinger】uitable的控件进行单行的上下移动的评论 (共 条)

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