LoginSignup
0
1

More than 5 years have passed since last update.

c++ builder > 考察 > 50 x 3個のコンポーネントを持つデザインの変更対応 > (x)コンポーネントのコピー / (o)デザインのコピー

Last updated at Posted at 2016-02-01
動作確認
C++ Builder XE4

問題

50 x 3個のTComboBoxを持つフォームがあるとする。

そのフォームのデザインは今後変更される可能性がある場合、どのようにすれば今後作業が短時間で対応できるか。

方法

1. 変更要求が出るたびに一つずつデザインを変更する

  • 欠点: デザイン変更時に毎回時間がかかる

2. テンプレートとなるコンポーネントを作って、そのコンポーネントを動的にコピーする

  • テンプレート例 > 5個のTComboBox
  • フォームデザイン時 : 5個のTComboBoxだけある
  • 全部で50 x 3個使う、とする
  • フォーム起動時に、5個を(10*3 - 1)回コピー
  • コピーするためのロジックを実装しておく
  • 欠点: ロジックを実装するのに時間がかかる
  • 利点: 一度ロジックを実装しておけば、次回以降はテンプレートだけのデザインを変更で済み、短時間作業となる

従来は項目1で対応していたのを項目2とした。

項目2の問題は、動的コピーした場合に動的に生成されたコンポーネントの名前が自動生成され、自分が使うソフト用に名前をつけなおす処理が必要。

この点がひっかかっていた。

ふと、3つ目の方法を思いついた。

3. デザインのコピー > デザインテンプレートとなるコンポーネントを作って、そのコンポーネントのデザインだけを既存のコンポーネントへコピーする

  • フォームデザイン時 : 5個のデザインテンプレート用TComboBoxがあり、また145個のTComboBoxがある

  • 縦一列のコンポーネント

    • Leftプロパティをコピー
    • Widthプロパティをコピー
  • 横一列のコンポーネント

    • Topプロパティをコピー
    • Heightプロパティをコピー (TComboBoxはHeight変更しても無効)

実装例

フォームデザイン画面
左上の一つがデザインテンプレートのコンポーネント。

qiita.png

整列後

qiita.png

注意点としては、フォームデザインと実行時の表示が乖離しすぎると、ソフト開発者(自分も含めて)にわかりにくいので、微調整をする程度での使い方がいいのかもしれない。


2016/02/02追記

上記の程度の変更であれば、Ctrlを押しながらコンポーネントを複数選択して、Left, widthなどをまとめて変える方が簡単な気がしてきた。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1