su_do様、sabr0様
提案いただいた getPreferredSize の利用 ほぼ満足いくものでした。
1点 考慮が必要だったのは getPreferredSize を利用すると 紐つくDialogが無条件に表示されてしまう点でした。
しかも endExecute で消えないのです。
本処理途中で、他のメッセージ表示も想定したので。この想定外のDialog表示解消も必要となりました。
いろいろ考えた挙句、いささか力業ですが…以下の手順を踏みました
① 必要な CtlのSizeを getPreferredSize で求めた後 一旦 Dialogをdisposeして消す
※この部分だけだと表示に気づかない。心配した画面のちらつきも感じませんでした(私が鈍感なだけ…)
② ①で求めた Ctlの各Sizeを使って 表示するDialog および 配置するCltのModelの Size/Positionを設定
※この処理中で表示できない場合や補正する場合などのMsg表示をしたかった
※getPreferredSize でえられる情報は Pixel単位らしく(記述が見つからず) Modelへの設定は 単位変換(Pixel➡AppFontUnits)が必要みたい
③ ②で設定した CtlModelが配置された DialogModelでDialogCtlを再Create>再CreatePeer>Listener等の設定>execute() で表示
いくつかためしましたが、以前私が報告した方策と比べると
A.等倍/プロポーショナルいずれも高さは ほぼ追従できている
※メイリオが追従できるのが大きい!
B.等倍は幅も追従できているようだが、プロポーショナルで一部
大きな情報(下記)等ではすこしだけ折れ曲がる
※10%マージンを取ると用意したTestDataでは折れ曲がらなかった
C.getPreferredSize は Tabも考慮したSizeをかえしてくれてる(あたりまえか…)
D.参考ですが TextBox以外のLabelやButtonもcom.sun.star.awt.XLayoutConstrains(getPreferredSizeを含むI/F群)を持っていたので同様のSize調整ができてました。
※ためしていませんが 日付/時間/数字入力フィールド等も前述のI/F群の存在を確認しました
【Q_Taroが使用した大きな表示情報の始まり】
===============D_E_B_U_G============================
boxx_msg_calcSizPos最期(正常終了)
====================================================
Font ::Nam:メイリオ【プロポーショナル】 Siz:18
====================================================
Title ::Ttl:〇 Siz(273/14) Pos(4/4)
====================================================
Icon ::Icn:〇 Siz(29/29) Pos(4/22)
Icon ::Typ:Crit FntSiz:36
====================================================
Messag::Msg:〇 Siz(240/29) Pos(37/22) Typ:Left----
====================================================
Button::Typ:OkOnly DefBtn:DefBtn1 Num:1
Button::[1]Siz(39/25) Pos(121/55)[2]Siz(--/--)/Pos(--/--)[3]Siz(--/--)/Pos(--/--)
====================================================
Dialog::MaxSiz:768/432 Siz(281/84) Pos(340/222)
====================================================
OKは処理続行、Cancelは終了
【Q_Taroが使用した大きな表示情報の終わり】
ともあれ、getPreferredSize利用と上記手順で当初の目的は達せられたように思います。
ありがとうございました。