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;
ページトップ