あるフォームを2回目呼び出したら動かないのですが?

解決


altlegend  2011-04-06 08:10:14  No: 40421

一応、すべてコンパイルできたのですが、動きがおかしいところがあるので、また質問させてください。

タイマーを使って同じフォームを何回か使うんですが、delphi7ではうまく動いていました。
2009を買ったときにコンパイルしたら2回目に「無効/非表示ウィンドウにはフォーカスを設定できません」と出ます。
手動でも、2回目呼び出すと同じ表示が出ます。
その表示を消して、ボタンで動かすと実行できるんですが、理由分かりますか。
この表示が出るのは、一つだけです。
その他のものは何回使っても、問題ありません。


  2011-04-06 08:13:37  No: 40422

SetFocusメソッドあたりが何か悪いことをしていると思います。
FormのOnShow、OnCreate辺りでSetFocusをしているところがあったら、
はずしてみて様子を見たらどうでしょうか。


D  2011-04-06 10:09:37  No: 40423

フォームやコントロールが非表示になっていたりEnabledがFalseになっている時にSetFocusを呼ぶとそのメッセージが出ます。
ちなみにdelphi 7でもこのメッセージは出るはずです。

なのでSetFocusを呼ぶ時にSetFocusできるかどうかをチェックしてみてはどうでしょうか。

  if (CanFocus) then begin
    SetFocus;
  end;


altlegend  2011-04-06 15:50:10  No: 40424

formを消すのに、次のようなコードにしていました。
Form1 := Nil;

これを
close;
に変えたら、問題なくなりました。

昔、教えてもらったままで放置してました。
今までは問題なかったんですがね。

ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加