2012/03/23

ExplicitWidth を排除する

いつのバージョンからか ExplicitWidth や ExplicitLeft などが .dfm に書き込まれるようになり、Width や Left と同じ値なのにこれはいったいなにかと疑問でした。しかもたまに消えたりする。
ただそんなに支障は無いのでほとんど気にしてませんでしたが昨日、フローティングウィンドウを ExpressLocking に変更してみると、頻繁に .dfm の内容が変わってしまう。まれに元に戻ったりするけど、TortoiseSVNでバージョン管理しているとエクスプローラーが赤くなってしまうのでこれはかなり目障り。

ヘルプで見ると「コントロールの水平方向のサイズをピクセル単位で明示的に示します。」とまったく意味不明。そこでちょっとだけ自分なりに調べてみると、Align プロパティで alNone 以外のalClient でコントロールを広げたりしたあとに、ふたたび alNone に戻した時に前の位置と大きさに再セットするため用のプロパティだと勝手に解釈しました。

Delphi7 とかだと、たとえばフォームに貼り付けたパネルを alClient にしてから alNone にもどしてもコントロールのサイズはそのままだけど XE2(いつから?) だとサイズが戻ります。

「別にそうならなくてもいい」ので、全部削除することにしました。

ただデザイナでさわると再び出現するので Expert でも作ろうかと思い立ちましたが、とりあえずもネット調べてると DDevExtensions がその機能を有してました。

フォーム付のユニットを全部開いて、すべて変更済みにして、すべて保存。これでスッキリした。

0 件のコメント:

コメントを投稿