Editに数字を入力後、Enterキーで次のEditへ移動するという事を
したくてコードを書いたのですが以前に使っていた方法が使えません。
環境
Delphi XE4 Starter(Update1) + Windows7(32bit)+SP1
新規作成、VCLフォームアプリケーションにて新しいプロジェクトを作成
FormにEditを2つ配置
以下にソース
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
procedure FormKeyPress(Sender: TObject; var Key: Char);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
private
{ Private 宣言 }
public
{ Public 宣言 }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
// 機能する ただしEdit1の時のみ
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if (Key = #13) then
begin
Perform(WM_NEXTDLGCTL,0,0);
Key := #0;
end;
end;
// 機能しない 以前に使っていた方法
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if (Key = #13) then
begin
Perform(WM_NEXTDLGCTL,0,0);
Key := #0;
end;
end;
end.
愛読書である「Delphi5 裏技170…」では
TForm1.FormKeyPress(Sender: TObject; var Key: Char);にコードが
書いてあり、そのフォーム全体で機能していたような記憶があるのですが、
フォーカスは移動せず、beep音が出るだけです。
でも、TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);に
同じコードを書くとEdit1ではEnterキーで移動できます。
まあ、機能するんだからEdit毎にコードを書いたらいいのですが、
なんだかな〜。
Delphi XE4 Starter(安物)では動きが違うのかなぁ。
|