一応、すべてコンパイルできたのですが、動きがおかしいところがあるので、また質問させてください。
タイマーを使って同じフォームを何回か使うんですが、delphi7ではうまく動いていました。
2009を買ったときにコンパイルしたら2回目に「無効/非表示ウィンドウにはフォーカスを設定できません」と出ます。
手動でも、2回目呼び出すと同じ表示が出ます。
その表示を消して、ボタンで動かすと実行できるんですが、理由分かりますか。
この表示が出るのは、一つだけです。
その他のものは何回使っても、問題ありません。
SetFocusメソッドあたりが何か悪いことをしていると思います。
FormのOnShow、OnCreate辺りでSetFocusをしているところがあったら、
はずしてみて様子を見たらどうでしょうか。
フォームやコントロールが非表示になっていたりEnabledがFalseになっている時にSetFocusを呼ぶとそのメッセージが出ます。
ちなみにdelphi 7でもこのメッセージは出るはずです。
なのでSetFocusを呼ぶ時にSetFocusできるかどうかをチェックしてみてはどうでしょうか。
if (CanFocus) then begin
SetFocus;
end;
formを消すのに、次のようなコードにしていました。
Form1 := Nil;
これを
close;
に変えたら、問題なくなりました。
昔、教えてもらったままで放置してました。
今までは問題なかったんですがね。
ありがとうございました。
ツイート | ![]() |