Edit を自動移動するには?

解決


ヨネ  2003-09-25 22:05:01  No: 4995  IP: 192.*.*.*

Delphiを使用したてです
Edit1〜Edit10にそれぞれ数字を入れたいと思います
Edit1に数字を入力しEnterキーを押したらEdit2に移動し、
Edit2に数字を入力しEnterキーを押したらEdit3に移動し、
これをEdit10まで順番に移動したいのですがどうしたら良いのでしょうか?
教えてください。

編集 削除
Mr.XRAY  URL  2003-09-25 23:42:40  No: 4996  IP: 192.*.*.*

これにはいろいなコードが考えられます.その一つ..
Edit1のOnKeyDownとOnKeyPressイベントに以下のコードを書きます.

procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
     inherited;
     if Key=VK_RETURN then begin
         {次のタブ順序のコントロールにフォーカスを移動}
         SelectNext(ActiveControl, True,True);
       end;
       Key:=0;
     end;
end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
     if (Ord(Key)=VK_RETURN) then Key:=Chr(0) else inherited;
end;

次にEdit2のオブジェクトインスペクタのイベントのタブのOnKeyDown,OnKeyPressの各リストから,既に作成した上の2つのイベント
を選択します.これをEdit10まで繰り返します.

他の参考コードは他の方のレスをお待ち下さい.

編集 削除
HOota  2003-09-26 10:44:03  No: 4997  IP: 192.*.*.*

procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
   if Key=VK_RETURN then begin
      SendMessage(Handle, WM_NEXTDLGCTL, 0, 0);
      Key:=0;
   end;
end;

で次のコントロールに移ります。詳しくはSendMessageを調べてください。

編集 削除
ゆきお  2003-09-26 12:20:30  No: 4998  IP: 192.*.*.*

横から失礼いたします。
私も同様の悩みを抱えていたので参考にさせていただいております。
お二人の方法で動作確認できましたが、HOotaさんの方法で実行すると
エンターキーを押すとビープ(?)音が出ます。
この音を出さない方法はありますでしょうか?

編集 削除
 2003-09-26 14:04:19  No: 4999  IP: 192.*.*.*

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if key = #13 then
  begin
    SendMessage(Handle, WM_NEXTDLGCTL, 0, 0);
    Key := #0;
  end;
end;

編集 削除
ゆきお  2003-09-26 14:27:28  No: 5000  IP: 192.*.*.*

?さん、ありがとうございました。
希望通りに動いてくれました。感謝申し上げます。
失礼いたしました。

編集 削除
ヨネ  2003-09-27 08:59:27  No: 5001  IP: 192.*.*.*

Edit1のOnKeyDownイベントを書こうとするとエラーが発生します。
『フィールドメゾット名Edit1は定義済です』エラーがでます。
現在、Delphi7  Personalを使ています。
度のようにしたらよいのでしょうか?
教えて下さい

編集 削除
Halbow  2003-09-27 12:15:49  No: 5002  IP: 192.*.*.*

Halbow です。

> Edit1のOnKeyDownイベントを書こうとするとエラーが発生します。

ちゃんとオブジェクトインスペクタをダブルクリックして、ハンドラの枠組み
を生成してますか? 自動生成してるのにエラーになるのでしたら、そのとき
のコードをしめしてください。

編集 削除
ヨネ  2003-09-27 14:38:37  No: 5003  IP: 192.*.*.*

Halbowさん Mr.XRAYさん HOoteさん ?さん有難う御座います。
解決しました

編集 削除