2017-08-14 29 views
0

m-コードを使用して、マスクタブにパラメータを追加しようとしています。 「編集」パラメータと「ポップアップ」パラメータを追加したいとします。Simulink:プログラムを使用してSimulinkマスクタブにコントロールを追加

これまでのところ、私はそれらをタブに入れることはできません。彼らは一般的なグループにとどまります。 MathWorks社のドキュメントには、作業の指針を提供するために失敗している:

  • addDialogControl方法は「テキスト」と「ハイパーリンク」の項目
  • 「TABNAME」パラメータの問題削除されようとして警告(、より他のすべてのために失敗しています使用することはできません)。警告には、「タブのダイアログコントロールを使用してタブにパラメータを追加する」と表示されます。これに関する文書はどこにもありません。
  • 、それらが提供する例は不完全であり、(パラメータがタブの外に滞在する)表示された結果が得られていない行く、このリンクを参照してください。https://www.mathworks.com/help/simulink/ug/control-masks-programmatically.html#bu47973-4

を私が持っているSimulink.dialog.Controlクラスがあることに気づきました'moveTo'メソッドですが、パラメータはSimulink.dialog.Controlではなく、Simulink.MaskParameterインスタンスです。 Simulink.dialog.parameter.Controlクラスもありますが、どのオブジェクトが実際にそれに属しているのか、それが私を助けることができるのかわかりません。

助けてくれてありがとう、私はこれを行う方法を示すために最小限の例が必要です。

+1

可能であれば、あなたは多くの場合、より良いスタートでそれに期待されるすべてのコントロールを持っているダイアログを設計している、とあなたが/ドンを必要とするときにだけ「可視」プロパティを切り替えます特定のコントロールが必要です。 –

+0

これは、oufマスクが動的である必要はないため(同じインターフェイスクラスに対して複数の異なるマスクが必要なため)、これができます。しかし私は解決策を見つけた – Zangdar

答えて

0

これは良い方法です:私は上記の 'moveTo'メソッドを使用しています。あなただけの作成Simulink.MaskParameterから(moveToメソッドが含まれています)パラメータSimulink.dialog.parameterにアクセスするには

、あなたはMaskparameter

回旋と複雑にgetDialogControlを使用する必要がありますか?はい、それはあなたがしなければならないことです。ここで

はMWEです:

block = 'Untitled1/Atomic Subsystem'; 

wMask = Simulink.Mask.get(block); 

if ~isempty(wMask) 
    wMask.delete(); 
end 

wMask = Simulink.Mask.create(block); 

wMask.addDialogControl('tabcontainer','tabContainer'); 

wTabContainer = wMask.getDialogControl('tabContainer'); 

wTab1 = wTabContainer.addDialogControl('tab', 'Tab1'); 
wTab2 = wTabContainer.addDialogControl('tab', 'Tab2'); 

wTab1.Prompt = 'Programatically added tab1'; 
wTab2.Prompt = 'Programatically added tab2'; 

wTextOnFirst   = wTab1.addDialogControl('text', 'textOnFirst'); 
wTextOnFirst.Prompt  = 'Some text on the first tab'; 
wTextOnSecond   = wTab2.addDialogControl('text', 'textOnSecond'); 
wTextOnSecond.Prompt = 'Some text on the first tab'; 

wField = wMask.addParameter('Name', 'TextField' ... 
    , 'Type', 'edit'... 
    , 'Prompt', 'Programatically added text field'... 
    , 'Value', 'Toto'... 
    , 'Evaluate', 'on'... 
    , 'Tunable', 'off'... 
    , 'Enabled', 'on'... 
    , 'Visible', 'on'... 
    , 'Callback', 'disp(get_param(gcb, ''TextField''))'); 


wPopup = wMask.addParameter('Name', 'PopupField' ... 
    , 'Type', 'popup'... 
    , 'Prompt', 'Programatically added popup field'... 
    , 'TypeOptions', {'Value1', 'Value2', 'Value3'}... 
    , 'Evaluate', 'on'... 
    , 'Tunable', 'off'... 
    , 'Enabled', 'on'... 
    , 'Visible', 'on'... 
    , 'Callback', 'disp(get_param(gcb, ''PopupField''))'); 

wFieldDialog = wMask.getDialogControl('TextField'); 
wPopupDialog = wMask.getDialogControl('PopupField'); 

wFieldDialog.moveTo(wTab1); 
wPopupDialog.moveTo(wTab2);