|
|
||||
Tips > |
|||||
TextWidth で 1 行を全角 20 字にする |
更新 : 2009/10/29 |
||||
|
|
||
解説: Memo に文字入力して、原稿用紙みたいに 1 行何文字と分かれば便利です。全角半角文字があるので幅だけでは文字数をコントロールできませんが、とりあえず全角 20 字で考えてみます。 Memo の Font は、文字幅の関係があるので、プロポーショナルフォントではなく、MS ゴシックを使っています。 使用例: 例では、20 字が分かりやすいように、Memo1 コンポーネントに文字列 "あいうえおあいうえおあいうえおあいうえおかきくけこ" を入力しておき、Button1 のクリックで Memo1 の幅を 20 字相当に設定しています。 コンポーネントは、 Memo と Button を配置するだけです。 Button1 をクリックすると、TextWidth を使って、現在のフォントで描画された文字列 20 字の幅をピクセル単位で計算します。 その幅に合わせ、少し余白分を考慮して Memo1 の Width を設定しています。 //------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { Memo1->Font->Name = "MS ゴシック"; // 計算 int width = Canvas->TextWidth("W") * 20; // 入力制限したエリアにする Memo1->Width = width + 10; } //------------------------------------------------------------------- |