Wait until object is rendered in App Designer

17 次查看(过去 30 天)
Hello together,
I'm using the loading screen as desribed here, while my data is loaded.
The loading screen is closed, when the last function has finished. But no objects are rendered at this moment.
I'm creating a lot of buttons and edit fields programatically. But they are rendered very late, after the functions are already finished.
How to wait with closing the loading screen, until everything is rendered (or nearly at least)?
Thanks in advance!
Christof
  1 个评论
Mario Malic
Mario Malic 2024-6-9
More info would be helpful about interactions of these functions and UI components. I don't think that there is some reliable way to wait for the components to show up on the screen. After creating the last component, I would suggest to use pause and drawnow.

请先登录,再进行评论。

采纳的回答

Christof
Christof 2024-6-9
编辑:Christof 2024-6-9
Perfect Mario! It worked with drawnow at the end of the loop for creating buttons.
Thank you very much:)
Here's a snippet.
%...Loop for creatng ~250 buttons...
% Default buttons into MU analog tab - no signal. Date, Time, Time [s], Event
else
app.Logs(app.Log).Variables{2, i} = uibutton(app.MUTab, 'state'); %Creating a Default Button in MU Analog TAB
app.Logs(app.Log).Variables(3, i) = num2cell(2);
app.Logs(app.Log).Variables(4, i) = {'MUTab'};
app.Logs(app.Log).Variables{2, i}.Tag = 'noPlot';
end
app.Logs(app.Log).Variables{2, i}.Position = A; %Giving the Button a position
app.Logs(app.Log).Variables{2, i}.Text = app.Logs(app.Log).Variables(1, i); %Giving the Button it's Text
if i == 2 || i == 3 || i == 4 % Show buttons pushed for the first x columns
app.Logs(app.Log).Variables{2, i}.Value = 1; % Button activated
app.Logs(app.Log).Variables{2, i}.BackgroundColor = [0.75 0.97 0.75]; % Light green for activated state
end
% Random colors per variable for plot
RandomColor = rand(1, 3);
if ((RandomColor(1) > 0.9) && (RandomColor(2)) > 0.9 && (RandomColor(3) > 0.9))
RandomColor = RandomColor - [0.1 0.1 0.1]; % Shift darker if too bright
elseif ((RandomColor(1) < 0.1) && (RandomColor(2) < 0.1) && (RandomColor(3) < 0.1))
RandomColor = RandomColor + [0.1 0.1 0.1]; % Shift lighter if too dark
end % Put random color into button user data
app.Logs(app.Log).Variables{2, i}.UserData(1,2:4) = RandomColor(1:3);
app.Logs(app.Log).Variables{2, i}.ValueChangedFcn = @app.DataButtonPress; %Callback function for variable buttons
app.Logs(app.Log).Variables{2, i}.UserData(1,1) = i; % Put Nr of Variable in Userdata of button
posEdit = A;
posEdit(3) = 24; % Position for Editfield for this button/variable
posEdit(1) = A(3) - A(1) +1 ;
app.Logs(app.Log).Variables{5, i}.Position = posEdit;
app.Logs(app.Log).Variables{5, i}.Value = 0;
A(2) = A(2) -21; %Position change for the next Button
end
% forces rendering before going on(?)
drawnow
end

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Develop Apps Using App Designer 的更多信息

产品


版本

R2020b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by