Focusを移動するには??


理恵  2003-10-03 12:12:42  No: 5072  IP: 192.*.*.*

すごく困っています..
Edit1、2をForm1に貼り付けて、
Edit1にFocusがあるときに、リターンキを押すことによって、Edit2にFocusを移動させるために、下のようなプロがラムを書きました。

procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
 if Key=VK_RETURN then
Form1.ActiveControl:=Edit2;
end;
end.

このプログラムを実行させて、
Edit1にFocusがあるときに、リターンキを押しても
Focusが移動しないのですが

別の、Projectでまったく同じプログラムを書いて、実行すると、
うまく、Focusが移動するのですが、不思議で仕方ありません。。
どなたか教えていただけませんか??

編集 削除
通りすがり  2003-10-03 12:30:12  No: 5073  IP: 192.*.*.*

コードがまったく同じで、動きが違うのであれば、
コード以外になにか違いがあるのではないでしょうか?

編集 削除
理恵  2003-10-03 12:41:38  No: 5074  IP: 192.*.*.*

詳しく言うと、
ファイルに保存してある、あるprojectを呼び出して
そのプログラムに、Focusが移動するように、上のプログラムを追加すると
うまくいかないのですが
ほかの、Projectに上のコードを書くとうまくいくにですが

プロパティなどの設定を変えたためなのでしょうか??

編集 削除
LupinⅢ  URL  2003-10-03 13:05:04  No: 5075  IP: 192.*.*.*

Form1.ActiveControl:=Edit2;
↑これを↓これにすればどうでしょう?
Edit2.SetFocus;

編集 削除
理恵  2003-10-03 13:08:31  No: 5076  IP: 192.*.*.*

それは、試してみたのですが、
Form1.ActiveControl:=Edit2;
と、同じようの結果になりました。

編集 削除
とんとん  2003-10-03 13:10:28  No: 5077  IP: 192.*.*.*

Form1.KeyPreview = Trueで何かしてしまっているとか

編集 削除
通りすがり  2003-10-03 13:17:38  No: 5078  IP: 192.*.*.*

OnKeyDown イベントはリターンキーを押した場合にこのコードを実行しているのか
確認してみては。
IDE上で if Key=VK_RETURN then 行をブレイクポイントに設定(F5)後
実行してみると良いです。
コードを実行しているとして、その後別なイベントが発生してフォーカス移動を
無効にしているような気もしますが。

編集 削除
LupinⅢ  URL  2003-10-03 13:46:58  No: 5079  IP: 192.*.*.*

やはりブレークポイントを設けるか、ShowMessageで指定位置まで来ているかチェックする必要がありそうですね。
わたしも多分指定位置の処理に来ていないと思います。

編集 削除
マッコ  2003-10-03 15:30:36  No: 5080  IP: 192.*.*.*

オブジェクト インスペクタのOnKeyDounとの関連付けは確実ですか、
よく私は、コピーぺタで作成するとイベントの関連付けが出来てなく
よく悩まされます。

編集 削除
さどやま  URL  2003-10-03 22:38:45  No: 5081  IP: 192.*.*.*

回答ではなく、質問で申し訳ないのですが。

理恵さんは書かれました。

「詳しく言うと、
ファイルに保存してある、あるprojectを呼び出して
そのプログラムに、Focusが移動するように、上のプログラムを追加すると
うまくいかないのですが」

  この文の意味を次のように理解しましたが、正しいでしょうか?
①  Edit1は、project1=project1.exe にある。
②  Edit2は、project2=project2.exe にある。そのEdit2へフォーカスを移したい。

「ほかの、Projectに上のコードを書くとうまくいくのですが」
  ここでいう「ほかのProject」とは、project2のことでしょうか。
  それともproject3があるのでしょうか。

  的外れな質問だったらごめんなさい。

編集 削除
masayan  2003-10-04 11:54:06  No: 5082  IP: 192.*.*.*

もう解決されたかもしれませんが、メニューやアクション項目のShortCutにEnterを設定していませんか?
メニューやアクション項目のShortCutは、OnKeyDownより優先するようです。

編集 削除