掲示板一覧   -   トピック一覧
   EA API
     Connectorの削除が図に反映されないケースがあります。


スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 トピック
diosan2
投稿日時: 2008-6-26 10:39
EA Full Member
投稿: 75

Connectorの削除が図に反映されないケースがあります。

要素の接続を削除する時、削除したことが図に反映されないケースがあるようです。

ちょっとわかりにくいので手順を記します。
① 図Aに要素Aと要素Bを作成し、接続で結びます。
② 図Bに要素Aと要素Bのリンクを置きます。
→ 自動で接続が表示されます。
③ プログラムからAB間の接続を削除します。
④ 図Aの方は接続がなくなっています。
図Bの方は接続が残っています。
⑤ 図Bを一旦閉じてから開きなおすと接続は消えています。

削除は以下のようなコードを実行しています。
eaElem.Connectors.DeleteAt(i, true);

AdviseConnectorChange()やAdviseElementChange()を直後に
読んだりもしましたが、結果は同じでした。

何が足りないのでしょう?
sugimoto
投稿日時: 2008-6-26 10:55
EA Administrator
投稿: 1992

Re: Connectorの削除が図に反映されないケースがあります。

ご質問いただきましたような状況の場合は、
ダイアグラムの表示を更新する必要があります。

ある特定のダイアグラムの表示のみを更新する場合は、
Repository.ReloadDiagram(long)
を実行してください。
上記の例の場合は、パラメータに図BのDiagramIDを設定してください。

開いているダイアグラム全体の表示を更新する場合は、
Repository.RefreshOpenDiagrams(bool)
を実行してください。
パラメータに設定する値は、ヘルプファイルをご確認ください。

ご確認のほど、よろしくお願いいたします。

何かご不明点などありましたら、ご連絡ください。
diosan2
投稿日時: 2008-6-26 11:20
EA Full Member
投稿: 75

Re: Connectorの削除が図に反映されないケースがあります。

ReloadDiagramに関しては知っていましたが、要素に対する接続
削除なので対象の図を探すのはできるだけ避けたいところです。
ConnectorIDからDiagramLinkを探し、そこからDiagramを導き
ださなくてはいけないのですよね。

ご指摘のRepository.RefreshOpenDiagrams(bool)がよさそうに
思ったので試したのですが、うまくいきませんでした。

追伸:EAのバージョンは"Build 830J" です。
sugimoto
投稿日時: 2008-6-26 12:03
EA Administrator
投稿: 1992

Re: Connectorの削除が図に反映されないケースがあります。

ご迷惑をお掛けし、申し訳ございません。

現在のビルドでは、Repository.RefreshOpenDiagrams(bool)が
正しく動作していないことを確認いたしました。

パラメータをfalseにしても、trueにしても結果は同様でした。

こちらは、EAのバグになりますので、
開発元に連絡し、修正いたしたします。

現時点ですと、ダイアグラムの再読み込みはReloadDiagramになって
しまいますが、ご認識どおり、このAPIを利用しようとすると、
該当の接続を利用している要素を調べ、その要素が配置されたダイアグラムを
すべてReloadDiagramする必要があり、接続を削除する際の処理が
複雑かつ重くなってしまうことが考えられます。
そのため、今回のような状況では、やはりRefreshOpenDiagramsの
ご利用がよろしいかと思います。

RefreshOpenDiagramsが修正されましたら、ご連絡させていただきます。

引き続き、ご迷惑をお掛けし、申し訳ございません。
diosan2
投稿日時: 2008-6-26 13:27
EA Full Member
投稿: 75

Re: Connectorの削除が図に反映されないケースがあります。

ご確認いただきありがとうございました。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ