0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

[Obsolete] C++ Builder XE4 > geometry > 右配置のTEditのフォントサイズを拡大時、左配置のTChartを残りスペースで描画するサイズに落とす > Font->Size変更後に他の値を自動計算

Last updated at Posted at 2018-10-22
動作環境
C++ Builder XE4

Obsolete

(追記 2018/10/22)
下記の記載内容よりより良い実装が見つかったので、この記事は「Obsolete(廃版、非推奨、旧版)」扱いとします。

推奨は以下。

v0.1 > 横方向の調整

処理概要

  • TChartが左に、TEditが右に配置されている
  • TEditのフォントサイズを拡大できるように
    • SVGAから4K UHD表示対応
    • フォントサイズ変更時、TEditのWidthを自動変更
      • 文字数があまり変わらないように
    • TEditのRightは固定
    • TChartのWidthは残りスペースで描画できるようにする
    • 変更はフォントサイズのみとして、残りの値は自動計算する

フォームデザイン

以下のようにアンカーを設定している。

  • Edit1, Label1, B_large
    • Anchors: akTop, akRight
  • Chart1
    • Anchors: akLeft, akTop, akRight, akBottom

実装

Unit1.cpp
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
	: TForm(Owner)
{
	Edit1->Text = L"12345678901234567890";

}
//---------------------------------------------------------------------------
void __fastcall TForm1::B_largeClick(TObject *Sender)
{
	// 右配置のTEditのサイズを変更時、左配置のTChartのサイズを調整する
	// (TChartを残りスペースで描画する)

	int org = Edit1->Height;

	Edit1->Font->Size += 2;
	int displacement = Edit1->Height - org;

	displacement += 12; // 12: 任意の値 (結果を見ながらTEditの文字数があまり変わらないよう調整した)

	displacement *= 2; // 2: 左右

	Edit1->Width += displacement;
	Edit1->Left -= displacement;

	Chart1->Width -= displacement;
}
//---------------------------------------------------------------------------

結果!

起動直後
2018-10-22_10h53_01.png

B_largeを一回クリック
2018-10-22_10h53_56.png

さらに一回クリック
2018-10-22_10h54_17.png

さらに数回クリック
2018-10-22_10h55_13.png

v0.2 > 縦横方向の調整

縦方向の調整も加えた。

実装

Unit1.cpp
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
	: TForm(Owner)
{
	Edit1->Text = L"12345678901234567890";

}
//---------------------------------------------------------------------------
void __fastcall TForm1::B_largeClick(TObject *Sender)
{
	// 右配置のTEditのサイズを変更時、左配置のTChartのサイズを調整する
	// (TChartを残りスペースで描画する)

	int org = Edit1->Height;

	Edit1->Font->Size += 2;
	int displacement = Edit1->Height - org;

	displacement += 12; // 12: 任意の値 (結果を見ながらTEditの文字数があまり変わらないよう調整した)

	displacement *= 2; // 2: 左右

	Edit1->Width += displacement;
	Edit1->Left -= displacement;

	// 横方向の調整
	Chart1->Width -= displacement;

	// 縦方向の調整
	int vertical = Edit1->Height - org;
	Chart1->Top += vertical;
	Chart1->Height -= vertical;
}
//---------------------------------------------------------------------------

結果

起動直後
2018-10-22_11h26_07.png

3回クリック後
2018-10-22_11h26_39.png

0
0
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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?