| 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(安物)では動きが違うのかなぁ。
 
 
 |