PCとASの文字列の取り扱いの違い その2

PCとASの文字列の違いを吸収するための処理について

TEditに入力される文字種を半角だけに制限したいと思います。  
文字が入力されるとKeyDown、KeyPress、KeyUpイベントが発生します。
この中で文字の処理に一番適しているKeyPressを使って処理を行います。  
具体的にはOnKeyPressイベントで半角文字以外の文字がメッセージとして流れてきたら無視してしまうといった方法をとります。  
以下がそのサンプルコードになります。

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);  
begin  
if Ord(Key) in [VK_BACK, VK_RETURN] then Exit;  
if (IsDBCSLeadByte(BYTE(Key))) or (InDBCS) then  
begin  
Key := #0;  
InDBCS := not InDBCS;  
end;  
end;

注意:このサンプルにはこのイベントハンドラ以外に、別途フォームにグロール変数(InDBCS: Boolean)が必要です。    
このサンプルでは、IsDBCSLeadByteで全角文字の最初の1バイト目を判別し、フラグを立てて次に流れてくる2バイト目に備えています。  
また、Key:=0で1バイト目2バイト目共に流れてきたキーを無効とすることで、結果として1バイト文字のみ入力可能としています。