2017-01-19 11 views
1

許容される入力を制限する方法日本デルファイのTEditの文字は?許容入力を制限する方法日本デルファイのTEdit上の文字?

日本語の文字のみを入力する必要があるので、デルファイXE8にはTEditが1つあります。どうすればいいですか?

+0

テスト個々の文字をOnValidating使用することができ、日本語と中国語の文字を区別することは困難である、(のhttp:// stackoverflowの.com/q/786637/576719)。 –

+0

私が得意でないのは、あなたがこれをしたい理由です。 –

答えて

3

LU RDは前述のように中国語/日本語文字を区別することは困難ですが、定義されたとおりの日本語の範囲をテストする場合は、次の機能を使用できます。 Unicode文字を入力するには、ソースファイルのフォーマットをUnicodeに変更する必要があります。エディタを右クリックし、File Formatオプションを選択すると、Unicode文字を入力できます。

function IsStringJapanese(const S: string): boolean; 
var 
    C: Char; 
begin 
    Result := True; 
    for C in S do 
    begin 
    Result := 
     // kanji 
     ((C >= '一') and (C <= '龿')) 
     // hiragana 
     or ((C >= 'ぁ') and (C <= 'ゟ')) 
     // katakana 
     or ((C >= '゠') and (C <= 'ヿ')); 
    if not Result then 
    begin 
     Break; 
    end; 
    end; 
end; 

第2の質問は、VCLまたはFMXのどちらを使用しているかによって異なります。 VCLでは、あなたが

procedure TMainForm.Edit1KeyPress(Sender: TObject; var Key: Char); 
begin 
    if not IsStringJapanese(Key) then 
    begin 
    Key := #0; 
    end; 
end; 

を以下のようKeyPressイベントを処理することで、特定の文字を入力するのを防ぐことができますが、それは編集するコピー/貼り付け文字列を防ぐことはできません、あなたはそれを使用する前にテキストを検証する必要があります。 [文字列の日本語/中国語の文字のテスト] FMXで

あなたがイベント

procedure TForm1.Edit2Validating(Sender: TObject; var Text: string); 
begin 
    if not IsStringJapanese(Text) then 
    begin 
    raise Exception.Create('Text not japanese'); 
    end; 
end; 
+0

ありがとうございました! –

関連する問題