掲示板一覧 - トピック一覧 EA API Diagram.Notesの値を変更できない |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | トピック |
---|---|
mogass | 投稿日時: 2015-6-16 15:38 |
EA Administrator 投稿: 209 |
Diagram.Notesの値を変更できないサポートに頂きましたご質問と回答の要約です。
○ご質問 以下のようなコードを書いているのですが、3行目でNotesに対して変数「sNoteOut」の値を設定しようとしているのですが、 Notesの値が変更されないまま(Notesは別の値を保持しているがそのまま変わらず。また、パッケージ配下の排他ロックは取得している。) となっております(デバッガで元の値が書き換わらないことを確認済)。 Dim sNoteOut As String sNoteOut = "aaaa" Package.Diagrams.GetAt(idx).Notes = sNoteOut Package.Diagrams.GetAt(idx).Update なにが問題なのかご教示いただければと思います。 宜しくお願いします。 ○回答 この度はご不便をお掛けし申し訳ございません。 GetAt()で取得されるオブジェクトは、参照ではなく、 別のオブジェクトとしてコピーが作成されますので、 ご質問にございましたコードの場合は、それぞれ別の オブジェクトに対して操作を行っている。という状況になります。 > Package.Diagrams.GetAt(idx).Notes = sNoteOut → オブジェクト(1)に対してNotesにsNoteOutの値を設定 > Package.Diagrams.GetAt(idx).Update → オブジェクト(2)に対してUpdateを実行 このため、値の変更と保存は同一のオブジェクトに対して 一連の操作で行う必要がございます。 例えば、以下のようなコードとすることで、正しく値が保存されるかと 思います。 //------------------------------------------------------------ Dim sNoteOut As String Dim oDiagram As EA.Diagram sNoteOut = "aaaa" Set oDiagram = Package.Diagrams.GetAt(idx) If Not (oDiagram Is Nothing) Then { oDiagram.Notes = sNoteOut oDiagram.Update } Package.Diagrams.Refresh(); //------------------------------------------------------------ ご確認のほど宜しくお願いいたします。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |