добавлено авторазмещение параметров по колву элементов в строке

сделана инициализация таблицы по необходимости (деинициализированные колонки)
This commit is contained in:
Razvalyaev 2025-06-15 15:52:44 +03:00
parent 7c2fb99908
commit 0145ec818e
2 changed files with 29 additions and 10 deletions

View File

@ -8,13 +8,17 @@ classdef customtable
tableControl = mask.getDialogControl(table_name);
tableParameter = mask.getParameter(table_name);
nCols = tableControl.getNumberOfColumns;
% if nCols > 0
% for i = 1:nCols
% tableControl.removeColumn(1);
% end
% end
% column = tableControl.addColumn(Name='Title', Type='edit');
% tableControl.Sortable = 'on';
% инициализация колонок если они пустые
% такое случается при removeParameter
if isempty(tableControl.Columns)
if nCols > 0
for i = 1:nCols
tableControl.removeColumn(1);
end
end
column = tableControl.addColumn(Name='Title', Type='edit');
tableControl.Sortable = 'on';
end
column.Name = tableParameter.Alias;
end

View File

@ -10,8 +10,9 @@ classdef periphConfig
tableNames = {'incTable', 'srcTable'};
columns_backup = customtable.save_all_tables(tableNames);
try
rowWidth = str2double(get_param(blockPath, 'rowWidth'));
containerName = 'configTabAll';
periphConfig.clear_all_from_container(mask, containerName);
@ -42,12 +43,13 @@ classdef periphConfig
tabCtrl = container.addDialogControl('tab', periph);
tabCtrl.Prompt = [periph ' Config'];
rowCountMap = containers.Map();
for j = 1:numel(defNames)
defPrompt = defNames{j};
def = defines.(defPrompt);
% Вызов функции добавления одного параметра
periphConfig.addConfig(mask, containerName, periph, defPrompt, def);
periphConfig.addConfig(mask, containerName, periph, defPrompt, def, rowCountMap, rowWidth);
end
end
end
@ -492,13 +494,26 @@ classdef periphConfig
end
end
function addConfig(mask, containerName, periphName, defPrompt, def)
function addConfig(mask, containerName, periphName, defPrompt, def, rowCountMap, rowWidth)
% mask объект маски Simulink.Mask.get(blockPath)
% containerName имя контейнера, в который добавляем параметр (например, 'configTabAll')
% periphName имя вкладки / контейнера для текущего периферийного блока (например, 'ADC')
% defPrompt имя параметра в Defines (например, 'shift_enable')
% def структура с описанием параметра (Prompt, Def, Type, Default, NewRow и т.п.)
if ~isKey(rowCountMap, periphName)
rowCountMap(periphName) = 0;
end
rowCount = rowCountMap(periphName) + 1;
% Устанавливаем NewRow, если он не задан
if ~isfield(def, 'NewRow')
def.NewRow = mod(rowCount - 1, rowWidth) == 0;
elseif def.NewRow == true
rowCount = 0;
end
rowCountMap(periphName) = rowCount;
% Найдем контейнер с таким именем
container = mask.getDialogControl(containerName);
if isempty(container)