App Designer How to "StartUp" within the App?
    조회 수: 11 (최근 30일)
  
       이전 댓글 표시
    
(1) How to "Restart" the App with something like clicking on a "Quit" Menu item instead of completely Exit the App and re RUN it? That way all properties will be re-initialized as fresh start.
(2) A callback function, can it be called (accessed to) from any function? 
Thanks.
댓글 수: 0
채택된 답변
  Tommy
      
 2020년 4월 22일
        (1) Two possibilities to reset your app to its default state:
I prefer the first. A simple example using a function called resetComponents:
classdef app1 < matlab.apps.AppBase
    % Properties that correspond to app components
    properties (Access = public)
        UIFigure        matlab.ui.Figure
        EditFieldLabel  matlab.ui.control.Label
        EditField       matlab.ui.control.EditField
        Button          matlab.ui.control.Button
    end
    % Component initialization
    methods (Access = private)
        % Create UIFigure and components
        function createComponents(app)
            % Create UIFigure and hide until all components are created
            app.UIFigure = uifigure('Visible', 'off');
            app.UIFigure.Position = [100 100 640 480];
            app.UIFigure.Name = 'UI Figure';
            % Create EditFieldLabel
            app.EditFieldLabel = uilabel(app.UIFigure);
            app.EditFieldLabel.HorizontalAlignment = 'right';
            app.EditFieldLabel.Position = [382 282 56 22];
            app.EditFieldLabel.Text = 'Edit Field';
            % Create EditField
            app.EditField = uieditfield(app.UIFigure, 'text');
            app.EditField.Position = [453 282 100 22];
            % Create Button
            app.Button = uibutton(app.UIFigure, 'push');
            app.Button.Position = [129 282 100 22];
            app.Button.Text = 'Reset';
            app.Button.ButtonPushedFcn = @app.resetButtonCallback;
            % Show the figure after all components are created
            app.UIFigure.Visible = 'on';
        end
        function resetComponents(app)
            % Create EditFieldLabel
            app.EditFieldLabel = uilabel(app.UIFigure);
            app.EditFieldLabel.HorizontalAlignment = 'right';
            app.EditFieldLabel.Position = [382 282 56 22];
            app.EditFieldLabel.Text = 'Edit Field';
            % Create EditField
            app.EditField = uieditfield(app.UIFigure, 'text');
            app.EditField.Position = [453 282 100 22];
            % Create Button
            app.Button = uibutton(app.UIFigure, 'push');
            app.Button.Position = [129 282 100 22];
            app.Button.Text = 'Reset';
            app.Button.ButtonPushedFcn = @app.resetButtonCallback;
            % Or, alternatively, instead of redefining each component, just figure out all
            % properties which could be changed by the user and reset them to their
            % defaults:
            %
            % app.EditField.Value = '';
            %
            % Simpler here, but takes more work for more complicated apps.
        end
        function resetButtonCallback(app, ~, ~)
            resetComponents(app);
        end
    end
    % App creation and deletion
    methods (Access = public)
        % Construct app
        function app = app1
            % Create UIFigure and components
            createComponents(app)
            % Register the app with App Designer
            registerApp(app, app.UIFigure)
            if nargout == 0
                clear app
            end
        end
        % Code that executes before app deletion
        function delete(app)
            % Delete UIFigure when app is deleted
            delete(app.UIFigure)
        end
    end
end
(2) You can access a callback function if you have access to an instance of the app and you are calling from a location allowed by the function's Access attribute (e.g. Public, Private, etc).
Example 1: You cannot call a callback function from within a static method, because the static method does not have access to an instance of the app.
Example 2: You cannot call a callback function externally if its Access attribute is Private.
댓글 수: 0
추가 답변 (0개)
참고 항목
카테고리
				Help Center 및 File Exchange에서 Develop Apps Using App Designer에 대해 자세히 알아보기
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

