掲示板一覧   -   トピック一覧
   EA API
     モデルブラウザのパッケージ表示順とPackage.Packagesの順番が異なる


スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 トピック
nakapon
投稿日時: 2022-4-13 9:27
EA Administrator
投稿: 423

モデルブラウザのパッケージ表示順とPackage.Packagesの順番が異なる

サポート宛てにいただきましたご指摘の要約です。

○ご指摘

APIでPackage.PackagesからPackageを1つずつ取得したところ
モデルブラウザのパッケージ表示順と順番が異なることがありました。
(常に異なるわけではありません)


○回答

まず、前提としまして
Package.Packagesの順番は、Packageの属性TreePos、Nameの順となります。
また、TreePosの基となるデータベースの値はt_package.Tposとなります。

ご送付いただいたサンプルプロジェクトのデータベース値を確認したところ
・Package1 → Tpos = 0
・Package2 → Tpos = 空文字
となっておりました。
(APIのPackage.TreePosは上記いずれも0となりますのでご注意ください)

上記を基に調査したところ、モデルブラウザとPackage.Packagesで
順番を決めるときのTposの扱いが異なっているために
ご連絡の現象が発生しているものと思われます。
・モデルブラウザ → 0と空文字を同じ値として扱う
・Package.Packages → 0と空文字では空文字が優先される

このようなデータが作成された理由としましては
以下の動作が関係しているものと思われます。
・モデルブラウザでパッケージ作成 → Tpos = 空文字
・APIでパッケージ作成 → Tpos = 0

また、モデルブラウザ上で「項目を上に移動」「項目を下に移動」を行なうと
その移動による順番に関係するすべてのパッケージのTposが再計算され
更新されますので、現象が発生しなくなっている状況です。

この度はご不便をお掛けし申し訳ございません。
本件につきましては開発元に改善を依頼いたします。
開発元の今後の対応につきましては以下をご参照ください。
https://www.sparxsystems.jp/faq_support.htm#sup14


モデルブラウザ上で「項目を上に移動」「項目を下に移動」を行なう以外の
回避策としましては、Tposに0と空文字が混在する状態を解消する必要があります。
そのためPackage.Packagesを利用をする前に、以下の処理を行なってTposの値を
更新する方法がございます。

1.Package.Packagesで、Package.TreePos=0のデータに対して
 再度Package.TreePos=0をセットする。
 (t_package.Tpos=空文字 を無くすため)

2.Package.Packages.Refresh() で情報を再取得する

3.Package.Packagesから取得順にPackage.TreePosを
 1からインクリメントでセットする

もし上記方法をお試しになる場合には、念の為、プロジェクトファイルの
バックアップをとってからお試しください。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ