掲示板一覧   -   トピック一覧
   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();
//------------------------------------------------------------

ご確認のほど宜しくお願いいたします。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ