VCL フォームのサイズ変更にコンポーネントの位置大きさを追従


2016.10.25更新

これのFireMonkey(FMX)版
無料のC++ Builder 10.1 Berlin Starter Edition で動作確認しました。
VCLのソースです。
ほぼFireMonkey(FMX)とソースは同じですが、akLeftなどの部分は、TAnchorKind::akLeftのように、「TAnchorKind::」を付けないとFireMonkeyではコンパイルできませんでした。
、 「TAnchorKind::」を付けるとVCLとFireMonkey(FMX)のどちらでもコンパイルが通ります。
フォームのサイズを変更したときに、フォーム内のコンポーネントの位置大きさも、
フォームサイズに追従して自動的に変わるようにしないと不自然です。
C++ Builderでは、コードを書かなくても、オブジェクトインスペクタで
コンポーネントのプロパティのAnchors内の、akLeft(左)、akTop(上)、akRight(右)、akButtom(下)をセットするだけで、フォームのサイズ変更時に追従してコンポーネントを寄せる側を指定することができます。
ここではコードを書きましたが、マウス操作のみでコード記述しなくてもできます。
コードを書いて指定する場合は次のようき書きます。
VCL フォームのサイズ変更にコンポーネントの位置大きさを追従
//--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::FormCreate(TObject *Sender) { //C++ Builder Berlin 10.1 Starter Edition のVCLのソースです。 //フォームのサイズを変更したときに、フォーム内のコンポーネントの位置も、 //自動的に変わるようにしないと不自然です。 //C++ Builderでは、コードを書かなくても、オブジェクトインスペクタで //コンポーネントのプロパティのAnchors内の、akLeft(左)、akTop(上)、akRight(右)、 //akButtom(下)をセットするだけで、フォームのサイズ変更時に追従してコンポーネント //を寄せる側を指定することができます。 //コードで書く場合は以下のように書きます。 //以下の部分はTAnchorKind::akLeftのように、「TAnchorKind::」を付けると、 //VCLとFireMonkey(FMX)間で共通のソースになります。 //Memo1をフォームのサイズを変更時、Mimo1の大きさをフォームに大きさに合わせる Memo1->Anchors = TAnchors() << akLeft << akTop << akRight << akBottom; //Edit1をフォームのサイズを変更時、フォームの大きさに合わせて右寄せする。 Edit1->Anchors = (TAnchors() << akTop << akRight) >> akBottom >> akLeft; //Button1をフォームのサイズを変更時、フォームの大きさに合わせて右寄せする。 Button1->Anchors = (TAnchors() << akTop << akRight) >> akBottom >> akLeft; } //---------------------------------------------------------------------------

この程度なら必要ないと思いますが一応ソースファイルも用意しています。
プロジェクトファイル、ヘッダファイル、画面設計ファイルを含むコンパイルするための全てのファイルがあります。
実行ファイルも入れています。
VCL版のこのソース、実行ファイル

C++ Builder 10.1 Berlin Starter Edition サンプルブログラム example

C言語の話


あーすブラウザ
オンライン鍋田辞書
鍋田辞書トップ