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

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

プログラミングについて
ホームページについて
キャドについて
電子カタログについて
書籍・雑誌
イベント
リンク集
Delphi2010 エディット(Edit) 2010/08/18
 
前頁で[Standard]内の「Label」(ラベル)について書きましたので次に、同じく[Standard]内の「Edit」(エディット)です。エディットは Delphi6 にもあります。

 
エディットは画面上で文字入力を行う際に利用します。配置すると、1つ目なので Nameプロパティは「Edit1」となり、Textプロパティも「Edit1」となります。

 
<オブジェクトインスペクタ>で外観を変更します。文字入力内容は、Textプロパティの内容となります。まず気になったのは CharCaseプロパティです。「ecNormal」が通常状態(デフォルト)で、「ecLowerCase」にするとアルファベットが小文字となって入力・表示されるようになり、「ecUpperCase」にすると大文字として入力・表示されるようになります。全角文字の場合にも有効のようです。必ず大文字として入力させたいような場合に利用する感じですね。

 
次に、NumbersOnlyプロパティというのがあります。デフォルトは False ですがこれをTrueにしてみると・・・



実行時、数字以外を入力しようとすると、こういうバルーンなメッセージが音とともに表示されて、入力できませんでした。全角文字の数字は入力できるようです。「-」「,」「.」等も入力できません。画面デザイン時のデフォルト状態で英字等を入力しておくとかプログラムでTextプロパティに英字等を入れるということは可能です。
 
あと、OEMconvertプロパティというのがありますが、これは、
編集コントロールに入力された文字を ANSI から OEM に変換して再び ANSI に戻すかどうかを決定します。
編集コントロールに入力された任意の文字を,あいまいではなく確実に OEM 文字セットに変換するには,OEMConvert を true にしてください。これにより,すべての文字が入力時に ANSI から OEM に変換されてその後で ANSI に戻されます。(ヘルプより)
との事ですが当面気にする必要はなさそうです。
 
<オブジェクトインスペクタ>のイベント頁の「onDblClick」でダブルクリックをして、ダブルクリックした際のイベントハンドラを記述します。
procedure TForm1.Edit1DblClick(Sender: TObject);
var
 s : string ;
begin
 s := Edit1.Text ;
 ShowMessage(s);
end;
という単純なものです。入力内容を変数に入れて確認するだけのものです。
 
保存してコンパイル(再構築)して実行します。
そして、IMEパッドでUnicode文字を入力します。

 
Edit1をダブルクリックしてみます。

 
正常に、入力したUnicode文字はstring型の変数に格納されて、ごく普通に扱えるというのが分かります。
 
Delphi6ではEditコンポーネントでUnicode文字の入力が出来ませんでしたし、仮に変換等を行ってプログラム内でUnicode文字を扱う場合でも、WideString型の文字として扱う必要がありましたから、それと比較しても、かなり容易に Unicode文字は扱えるようになった、と感じられます。
 
先ほどのダブルクリック時のイベントハンドラを
procedure TForm1.Edit1DblClick(Sender: TObject);
var
 s,t : string ;
 i : integer ;
begin
 s := Edit1.Text ;
 t := '' ;
 for i:=1 to Length(s) do
  t := t + Copy(s,i,1) + '-' ;
 
 ShowMessage(t);
end;
のように書き換えてみます。
 
保存してコンパイル(再構築)して実行します。
半角文字で「12345」と入力してダブルクリックしてみました。

そのまんまですね。
次に全角文字と半角文字で「あいうえお123」と入力してダブルクリック。

思惑通り、ちゃんと表示されていますね。
以前の Delphi6のString型(AnsiString型)の文字列であれば、半角か全角かを判断させて、半角なら1バイト分、全角なら2バイト分を切り取る、というようなことをしていましたが、Delphi2010での Unicodeを扱うstring型(UnicodeString型)文字列であればそういうことを考えなくても良いようなので、ある意味簡単になったと思います。
扱える手続き・関数が、文字列のどの型に対応しているのかに注意、でしょうか?
 
 
バッチファイル
BASIC
C言語のお勉強
拡張子な話
DOSプログラム
Delphi
>Delphi入門編
>Delphi2010
▲2010/08/17
 2010/08/18
▼2010/08/19
 
シェアウェア
Script!World
データベース
 
お問い合わせ 
本サイトはリンクフリーです
リンクバナー
(C)Copyright 1999-2015. By AFsoft All Rights Reserved.