Delphiを使用したてです
Edit1〜Edit10にそれぞれ数字を入れたいと思います
Edit1に数字を入力しEnterキーを押したらEdit2に移動し、
Edit2に数字を入力しEnterキーを押したらEdit3に移動し、
これをEdit10まで順番に移動したいのですがどうしたら良いのでしょうか?
教えてください。
これにはいろいなコードが考えられます.その一つ..
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まで繰り返します.
他の参考コードは他の方のレスをお待ち下さい.
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を調べてください。
横から失礼いたします。
私も同様の悩みを抱えていたので参考にさせていただいております。
お二人の方法で動作確認できましたが、HOotaさんの方法で実行すると
エンターキーを押すとビープ(?)音が出ます。
この音を出さない方法はありますでしょうか?
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if key = #13 then
begin
SendMessage(Handle, WM_NEXTDLGCTL, 0, 0);
Key := #0;
end;
end;
?さん、ありがとうございました。
希望通りに動いてくれました。感謝申し上げます。
失礼いたしました。
Edit1のOnKeyDownイベントを書こうとするとエラーが発生します。
『フィールドメゾット名Edit1は定義済です』エラーがでます。
現在、Delphi7 Personalを使ています。
度のようにしたらよいのでしょうか?
教えて下さい
Halbow です。
> Edit1のOnKeyDownイベントを書こうとするとエラーが発生します。
ちゃんとオブジェクトインスペクタをダブルクリックして、ハンドラの枠組み
を生成してますか? 自動生成してるのにエラーになるのでしたら、そのとき
のコードをしめしてください。
Halbowさん Mr.XRAYさん HOoteさん ?さん有難う御座います。
解決しました
ツイート | ![]() |