- The startup function should initialize the table with what appears to be 8x2 matrix of 0s (7 buttons + total). That would look like app.UITable.Data = zeros(8,2);
- Assuming the index input to the ButtonPushed function is the row number, you just need to gather the row of values into a 1x2 vector and assign it to the correct row.
App Designer - help with syntax for referring to an array's indices
조회 수: 8 (최근 30일)
이전 댓글 표시
Hi folks,
I'm trying to initialise the table values on the app designer to zero, then increment the relevant cell based on specific button clicks.
I'm doing this by making a general function ButtonPressed(), that increments the relevant index value of the array of numbers that populates the table, then having each button calling this function when pressed, but for the index relevant to it.
I'm certain that my syntax is incorrect, but I can't seem to find any documentation on this and would appreciate some help if possible!
Below are my code and a screenshot of the app.
Thanks!
methods (Access = private)
function ButtonPushed(app, index)
app.dataStructCounts(index) = app.dataStructCounts(index) +1;
app.dataStructPercentage(index) = (app.dataStructPercentage(index) / app.TotalCounts) * 100;
app.TotalCounts = (app.IncipientCounts + app.CircularCounts + app.LenticularCounts + app.RibbonCounts + app.IsotropicCounts + app.FillerCounts);
app.TotalPercentage = (app.IncipientPercentage + app.CircularPercentage + app.LenticularPercentage + app.RibbonPercentage + app.IsotropicPercentage + app.FillerPercentage);
app.UITable.Data = [app.dataStructCounts, app.dataStructPercentage];
end
end
function startupFcn(app)
app.dataStructCounts = {app.IncipientCounts; app.CircularCounts; app.LenticularCounts; app.RibbonCounts; app.IsotropicCounts; app.FillerCounts; app.ResinCounts; app.TotalCounts};
app.dataStructPercentage = {app.IncipientPercentage; app.CircularPercentage; app.LenticularPercentage; app.RibbonPercentage; app.IsotropicPercentage; app.FillerPercentage; app.ResinPercentage; app.TotalPercentage};
app.TotalCounts = (app.IncipientCounts + app.CircularCounts + app.LenticularCounts + app.RibbonCounts + app.IsotropicCounts + app.FillerCounts);
app.TotalPercentage = (app.IncipientPercentage + app.CircularPercentage + app.LenticularPercentage + app.RibbonPercentage + app.IsotropicPercentage + app.FillerPercentage);
app.UITable.Data = [app.dataStructCounts, app.dataStructPercentage];
end
function UITableCellEdit(app, event)
indices = event.Indices;
newData = event.NewData;
app.UITable.Data = [app.dataStructCounts, app.dataStructPercentage];
end
% Button pushed function: IncipientButton
function IncipientButtonPushed(app, event)
ButtonPushed(app, 1);
end
end
댓글 수: 0
채택된 답변
Adam Danz
2021년 3월 10일
편집: Adam Danz
2021년 3월 10일
The question is mostly clear and the image is helpful. Interesting approach to align the buttons with the UITable rows - I like it. Your use of a general callback function assigned to all buttons is also well organized.
Since there are many variables in your code and we can only guess what they are, here's the general approach and you can let us know how it differs from what you're doing.
newData = [app.dataStructCounts, app.dataStructPercentage];
app.UITable.Data(index,:) = newData;
댓글 수: 6
Adam Danz
2021년 3월 10일
Nice! That's an important lesson to learn, to work with numeric arrays rather than cell arrays of scalar numeric values, whenever possible.
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Matrix Indexing에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!