Editの入力制限
数値と'-.' のみ受付けます。
Delphi2009 には、NumbersOnly プロパティで制御できますが、'-' と '.' が入力できません。
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if (Pos(Key,'-0123456789.')=0) and (Ord(Key) <> VK_BACK) then Key := #0; end;
Enterキーで次のコントロール、Shift+Enterで前のコントロールに移動する
// TEditのonKeyPress イベント
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then begin
keybd_event(VK_TAB,0,0,0);
Key:=#0;
end;
// 入力制限する場合 ここに記述する
end;
----------------- - - - 例 - - - -------------------
Edit1 からEdit4まで OnKeyPress イベントに割当て
[EnterKey] で、Edit1→Edit2→Edit3→Edit4→Edit1
[Shift+EnterKey] で逆に、Edit1→Edit4→Edit3→Edit2→Edit1 となるようにします。
Edit1 からEdit4まで OnKeyPress イベントに割当て
[EnterKey] で、Edit1→Edit2→Edit3→Edit4→Edit1
[Shift+EnterKey] で逆に、Edit1→Edit4→Edit3→Edit2→Edit1 となるようにします。
-
Button1 コンポーネントのプロパティ設定
- Default : False
- TabStop : False
上記例のようにフォーム上にボタンコンポーネントがあるのが一般的ですが、この場合ボタンコンポーネントのプロパティ設定に注意が必要です。
Editを、数値専用にする (右寄せ)
数値のみ受付けます。、'-' と '.' が入力できません。
Delphi2009 は、TEditコンポーネントのNumbersOnly プロパティとAlignmentプロパティで実現できます。
//フォーム作成時に入れ替え (FormのOnCreateイベント)
procedure TForm1.FormCreate(Sender: TObject);
begin
SetWindowLong(Edit1.Handle, GWL_STYLE,
GetWindowLong(Edit1.Handle, GWL_STYLE)
or ES_RIGHT //右寄せ
or ES_NUMBER);
{変更を反映}
SetWindowPos(Edit1.Handle, 0, 0, 0, 0, 0,
SWP_NOMOVE or SWP_NOSIZE or
SWP_NOZORDER or SWP_FRAMECHANGED);
end;
ページトップ