AFsoft WebSite(エーエフソフト・ウェブサイト)
 

オペレーティング・システムについて

プログラミングについて
ホームページについて
キャドについて
電子カタログについて
書籍・雑誌
イベント
リンク集
DelphiXE3 [FMX]メモ(Memo) 2013/10/08
 
前頁で[Standard]内の「ComboBox」(コンボボックス)について書きましたので次は、同じく[Standard]内の「Memo」(メモ)です。
   【Delphi2010の記事はこちら】
   【DelphiXE3[VCLアプリケーション]の記事はこちら】
 
 


(ヘルプより)
AutoSelect
コントロールにフォーカスがあたったときに、メモコントロールのすべてのテキストが、自動的に選択されるかどうかを判別します。
AutoSelect 値を True に設定すると、〔Tab〕 キーを使用してメモ コントロールにフォーカスがあたった際に、そのコントロールのすべてのテキストが選択されます。AutoSelect を False に設定すると、〔Tab〕 キーを使用してメモコントロールにフォーカスがあたった際に、そのコントロールのテキストは選択されません。
CharCase
メモコントロール内のテキストの大文字小文字を示します。
メモコントロール内のテキストの大文字小文字を変更するには、CharCase プロパティの値を変更します。
ecNormal:通常(何もせず)
ecUpperCase:大文字
ecLowerCase:小文字
HideSelection
フォーカスが別のコントロールへ移動した際に、テキストの選択状態を表すビジュアル表示が維持されるかどうかを決定します。
HideSelection 値を True に設定すると、フォーカスが別のコントロールへ移動しても、メモコントロールのテキストは選択された状態のままになります。
ImeMode
内部使用専用です。
このプロパティは使用しないでください。これは、内部使用のためのものです。
以前は日本語入力をしない等の指定をする事ができましたが…
 
KeyboardType
画面キーボードの種類を決定します。
KeyboardType を使用すると、ShowVirtualKeyboard 関数が呼び出された際に現れる、画面キーボードの種類を指定することができます。
vktDefault
一般的なテキスト入力用の英数字キーボード
 
vktNumbersAndPunctuation
数字と句読記号が用意されているキーボード
 
vktNumberPad
数字専用キーボード
 
vktPhonePad
* 記号と # 記号を含む電話番号入力用キーボード
MaxLength
メモコントロールに入力できる最大文字数を示します。
MaxLength を使用すると、編集コントロールに入力できる最大文字数を設定することができます。編集コントロールにすでに MaxLength 以上の文字数が含まれている場合、ユーザーはそれ以上、文字を入力することはできません。
メモ: MaxLength を設定しても既存のテキストは切り捨てられません。MaxLength の文字数を超えてテキストが追加されるのを防ぐだけです。
メモ: MaxLength がゼロの場合でも、メモコントロールに入力される文字数に対してオペレーティング システムの制限がある場合もあります。
 
(ヘルプより)
TMemo は、複数行編集コントロールのラッパーです。
 
TMemo を使用して、標準の複数行編集コントロールをフォーム上に配置することができます。複数行編集ボックスでは、1 行を超えるテキストを入力することができます。大量のテキストを表すのに適しています。
 
メモコントロール内のテキストは、全体をまとめて編集することも、1 行ずつ編集することもできます。
 
メモコントロール内のテキストの特性は、たとえば Font、FontColor、CharCase などを使って変更することができます。
 
メモコントロールに対する変更を制限するには、ReadOnly、Enabled、MaxLength などのプロパティを使用します。
 
というわけで、文章入力を行うためのコンポーネントですね。
FireMonkey(FMX)には、リッチエディットが見当たりませんので、このメモを利用することは多くなりそうです。
 
VCL同様、文字入力を行なった結果は、Linesプロパティに入ります。
1行ずつ取り出す場合は、Memo1.Lines[0]、Memo1.Lines[1]、… で出来ます。
例えば、

のように配置して、ボタンのクリックイベントハンドラを
procedure TForm1.Button1Click(Sender: TObject);
var
 n,i : integer ;
 s : string ;
begin
 n := Memo1.Lines.Count ;
 s := IntToStr(n) + '行' + #13 + #10 ;
 for i := 0 to n-1 do
  s := s + IntToStr(i) + ':' + Memo1.Lines[i] + #13 + #10 ;
 
 ShowMessage(s);
end;
のようにしたとします。
 
Memo1のWordWrapプロパティがデフォルトの False の場合は、文章の自動折り返しは行われませんので、これを実行して、1行に長い文字を入れると、自動的に水平スクロールバーが表示されます(※ShowScrollBarsプロパティが Falseの場合は非表示)。


ボタンクリック

 
Memo1のWordWrapプロパティを True にして、文章の自動折り返しを行うようにした場合は


ボタンクリック

のようになって、画面上では次の行になっていたとしても、Linesプロパティ的には、改行キーを押さない限り、次の行になるという事はありません。
 
次に、下記のように配置して、文章を保存するようにしてみます。

procedure TForm1.Button2Click(Sender: TObject);
var
 f : string ;
begin
 if (SaveDialog1.Execute) then begin
  f := SaveDialog1.FileName ;
  try
   Memo1.Lines.SaveToFile(f);
  finally
   ;
  end;
 end;
end;
保存・コンパイル・実行を行います。



 
ファイル名に「test.txt」と入力を行なって保存したテキストファイルは、メモ帳などで開ける事が出来ます。この状態では、ANSI、つまり、日本語等はシフトJISコードとして保存されます。
 
しかし、FireMonkey(FMX)の場合は、もう、文字は Unicode として扱うのが標準であると思っておいたほうがいいと思います。ですので、
procedure TForm1.Button2Click(Sender: TObject);
var
 f : string ;
begin
 if (SaveDialog1.Execute) then begin
  f := SaveDialog1.FileName ;
  try
   // Memo1.Lines.SaveToFile(f);  // ANSI
   // Memo1.Lines.SaveToFile(f,TEncoding.Unicode);  // Unicode
   Memo1.Lines.SaveToFile(f,TEncoding.UTF8);  // UTF8
  finally
   ;
  end;
 end;
end;
のように、Unicode 又は UTF8 でのエンコードを行なって保存するようにしたほうがいいと思われます。
 
 
・・・ただ、このメモコンポーネントで文字入力をしようとすると、どうも、変換候補が表示されない様子で、入力しにくいですね。これが当方だけの現象なのか、仕様としてこのようになっているのか分かりませんけれども。
 
 
他のコンポーネントと同様、スタイルによって概観は変化します。スタイルブックを追加し、スタイル「Air.Style」を指定した状態です。

 
 
バッチファイル
BASIC
C言語のお勉強
拡張子な話
DOSプログラム
Delphi
>Delphi入門編
>Delphi2010
>DelphiXE3
▲2013/10/07
 2013/10/08
▼2013/10/08
 
シェアウェア
Script!World
データベース
 
お問い合わせ 
本サイトはリンクフリーです
リンクバナー
(C)Copyright 1999-2015. By AFsoft All Rights Reserved.