matlab の appdeisgner を使用して 2 つの単純なアプリを作成し、データを転送する

   今日学んだばかりのデータ転送アプリです。知識を定着させるために、簡単なアプリを作りました。皆さんのお役に立てれば幸いです。2 つのアプリ間でデータを転送する際に最も難しい部分は、2 つのアプリに接続を確立する方法であり、あるアプリが別のアプリのコンテンツを初期化コンテンツとして使用する必要がある場合があります。基本的なテンプレートは次のとおりです。

(ホスト)

(補助)

 まず第一に、最初のステップは、最も基本的なテンプレートを整理し、各コントロールの機能を考えることです。私のテンプレートで完成させる機能は、メイン インターフェイスの [追加] をクリックして補助インターフェイスを開くことです。補助インターフェイスでは、 add 情報を入力し、確定をクリックすると、情報がメイン インターフェイスのフォームに配置されます。

2 番目のステップでは、まずメイン インターフェイスを初期化します。

 function startupFcn(app)
            app.UITable.ColumnName(1)={'姓名'};
            app.UITable.ColumnName(2)={'学号'};
            app.UITable.ColumnName(3)={'班级'};
            app.UITable.ColumnName(4)={'年级'};
            app.UITable.ColumnName(5)={'身份'};
        end

 3 番目のステップは、補助インターフェイスから取得したコンテンツをメイン インターフェイスに更新するため、メイン インターフェイスにグローバル関数 updata を作成します (その機能はデータをメイン インターフェイスに更新することです)。コードは次のとおりです。

    methods (Access = public)
        
        function updata(app,name,number,class,year,identity)
            app.NAME=name;
            app.NUMBER=number;
            app.CLASS=class;
            app.YEAR=year;
            app.IDENTITY=identity;
            team={string(name) string(number) string(class) string(year) string(identity)};
            app.UITable.Data=[app.UITable.Data;cell2table(team)];
        end
    end
    

 グローバル変数は次のとおりです。

    properties (Access = private)
        NAME;
        NUMBER;
        CLASS;
        YEAR;
        IDENTITY;
    end

4 番目のステップは、メイン インターフェイスが補助インターフェイスを呼び出せるようにし、追加コントロールを押して開きます (補助インターフェイスが初期化されたデータ コンテンツを持つことが許可されていない場合は、app2 (app, , , 、)パラメータ、データを初期化する必要がある場合は、パラメータを追加してapp2に表示する必要があります。表示はapp2のstartupfcnで完了し、app2(app)とapp2の初期化関数が接続されます)、コードは次のとおりです。

function addButtonPushed(app, event)
            app.addButton.Enable='off';
            app2(app);
        end

これにより、app2 が開きます。

5 番目のステップは、app2 を初期化することです (app2 (アプリ) には他のパラメーターがないため、そのパラメーターは app2 (アプリ) のパラメーターに直接接続されます。そのため、app2 (アプリ) の役割である mainapp を除き、そのパラメーターは無視できます。 mainapp メインインターフェイスが app1) であることを app2 に伝えるためのもので、コードは次のとおりです。

        function startupFcn(app, mainapp, name, number, class, year, identity)
            app.ListBox.Items(1)={'班长'};
            app.ListBox.Items(2)={'团支书'};
            app.ListBox.Items(3)={'普通干部'};
            app.ListBox.Items(4)={'学生'};
            app.DropDown.Items(1)={'2020'};
            app.DropDown.Items(2)={'2021'};
            app.DropDown.Items(3)={'2022'};
            app.DropDown.Items(4)={'2023'};
            app.Node.Text='通信工程';
            app.Node_2.Text='一班';
            app.Node_3.Text='二班';
            app.Node_4.Text='三班';
            app.callingapp=mainapp;
        end

6 番目のステップは、数値コントロールを使用して、その下に子ノードがあるかどうかを判断し、子ノードがある場合は選択を続けます。ない場合は、クリックされた部分に表示されている内容を返します。コードは次のとおりです。

function TreeSelectionChanged(app, event)
            selectedNodes = app.Tree.SelectedNodes;
            if isempty(selectedNodes.Children)
                app.a1=selectedNodes.Text;
            else
                app.a1='';
            end
        end

7 番目のステップは、app2 に入力されたデータを app1 のテーブルに更新することです。これは、app1 のグローバル関数 updata (パブリック グローバル関数である必要があります) を呼び出すことです。コードは次のとおりです。

        function sureButtonPushed(app, event)
            updata(app.callingapp,app.EditField.Value,app.EditField_2.Value,string(app.a1),string(app.DropDown.Value), string(app.ListBox.Value))
            app.callingapp.addButton.Enable='on';
            delete(app);
        end

これにより、データがフォームに返されます。

最後に、app2 の app1 のボタン コントロールを呼び出したい場合は、mainapp を読み取るためのグローバル変数を app2 に作成し、このグローバル変数を呼び出す必要があります。app1 のコントロールを無効にしたい場合は、 app.callingapp.addButton.Enable='off'; を実行できます。

おすすめ

転載: blog.csdn.net/new_EAGLE/article/details/125759358