掲示板一覧   -   トピック一覧
   EA API
     ダイアグラムオブジェクトの色について


スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 トピック
mogass
投稿日時: 2013-9-30 12:23
EA Administrator
投稿: 171

ダイアグラムオブジェクトの色について

サポートに頂きましたご質問と回答の要約です。

○ご質問

ダイアグラム上の要素の表示色をコードから変更する方法につきまして,
お教え頂きたい事がございます.

タグ付き値の値に応じて色を変化させるため,以下のようなコードを記述しております.

 EA.Collection objects = targetDiagram.DiagramObjects;
for (short idxObj = 0; idxObj < objects.Count; idxObj++) {
EA.DiagramObject targetObj = (EA.DiagramObject)objects.GetAt(idxObj);
if (targetObj == null) continue;
targetObj.Style = "BCol=" + [設定色];
targetObj.Update();

ここでご質問なのですが,上記のコードで要素の色は設定する事ができたのですが,
要素の位置が変わってしまい,全体のレイアウトが崩れてしまう現象が発生しております.
要素の位置を変更せず,表示色のみを設定するためには,どのような処理を行えばよろしいの
でしょうか?

○回答

いただきましたご質問に回答させていただきます。

引用:
targetObj.Style = "BCol=" + [設定色];

DiagramObjectのStyle属性に格納されている関しましては、
様々な値がセミコロン区切りで設定されていますので、
元の値を上書きしないようにする必要があります。

例えば、DiagramObjectのStyle属性には以下のような値が
設定されています。

[DiagramObject.Styleの値の例1]
------------------------------------------------------------
DUID=360FDFD5;NSL=0;BCol=-1;BFol=-1;LCol=-1;LWth=-1;
fontsz=0;bold=0;black=0;italic=0;ul=0;charset=0;pitch=0;
------------------------------------------------------------

[DiagramObject.Styleの値の例2]
------------------------------------------------------------
DUID=7801DF5E;BFol=139;BCol=6008319;
------------------------------------------------------------

Style属性に設定されている値は、要素の種類などによって、
上記のように異なります。位置関係を示す値が格納されている場合も
ありますので、値を上書きすると位置情報が無くなりレイアウトが
変わってしまう可能性もございます。

DiagramObjectのStyle属性を編集する場合は、
以下のようにコードの処理を記述する必要があります。

1.DiagramObject.Styleの元の値に"BCol=nn;"(nnは数値)がある場合、
 その数値部分のみ置き換えた文字列をDiagramObject.Styleに設定。
2.DiagramObject.Styleの元の値に"BCol=nn;"(nnは数値)がない場合、
 "BCol=nn;"を追加しした文字列をDiagramObject.Styleに設定。

ご参考になりましたら幸いです。


●返信

お送り頂きました内容を基に,Styleの値にBColを追加するように修正してみたのですが,
症状は変わらず,位置が動いてしまっております.

今回,実際に色を設定している要素は,アクティビティ図のピンに対してなのですが,
Styleに設定されている値はそれぞれ以下のようになっております.
前: DUID=B682C934;LBL=CX=52:CY=10:OX=0:OY=0:HDN=0:BLD=0:ITA=0:
UND=0:CLR=-1:ALN=0:ALT=0:ROT=0;
後: DUID=B682C934;LBL=CX=52:CY=10:OX=0:OY=0:HDN=0:BLD=0:ITA=0:
UND=0:CLR=-1:ALN=0:ALT=0:ROT=0;BCol=16746889;

ご連絡を頂きましたように,今回の要素は元々BColを含んでおりませんでしたので,
こちらを追加しております.
(上記の元々の設定値内に位置情報を表現する要素が含まれていないようにも感じております)

ピンのようなサブ要素の場合には,上記の操作以外に他の部分も修正しないといけないのでしょうか?

何度も申し訳ございませんが,よろしくお願いいたします.

●回答

この度はご迷惑をお掛けし誠に申し訳ございません。

ご報告いただきましたアクションピンの位置が動いてしまう
挙動を確認致しました。

アクションピンのDiagramObjectのUpdateメソッドの実行時に、
親要素に対して左上に移動してしまうようです。

ご報告いただきました内容につきまして、回避策を検討しましたが、
問題を回避する方法はございません。

今回はお役に立てず誠に申し訳ございません。


他のお客様からも同様の問題を伺っており、
開発元には修正依頼を行う予定でおります。

引き続きご迷惑をお掛けし誠に申し訳ございません。


また何かございましたらご連絡ください。

今後ともよろしくお願いいたします。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ