新米プログラマーです。
delphiの動きがよくわかりません。
メインプログラムからあるPASファイルにいって
戻ってくる時、そのプログラムを「CLOSE」するとメインプログラム
の「FormActivate」に行ってしまうのですが、どういう事なのでしょうか?
正確な状況が良く分からないのですが
例えばダイアログを閉じて、メインフォームにフォーカスが戻ったなら、
メインフォームがアクティブになります。
呼び出し元に返ってくるだけです。
ありがとうございます。自分もそういうものだと思っていたのですが、
わかりません。
コードを見てもらいたいのですが
procedure TMainForm.SpeedButton1Click(Sender: TObject);
begin
AAAForm.Show;
end;
AAAForm.SpeedButton1Click(Sender: TObject);
begin
Close;
end;
AAAFormではFormCloseを通らないでCloseしているのですが、問題ですか?
また気になるのはブレークポイントをAAAForm.Showに置いて実行すると
その下のendまでいってからAAAFormにいっているみたいですが
こういうものなのでしょうか?
>AAAFormではFormCloseを通らないでCloseしているのですが
「FormCloseを通らないで」の意味が良くわからないのですが
別段、問題のある記述では無いように見えます。
>また気になるのはブレークポイントをAAAForm.Showに置いて実行すると
>その下のendまでいってからAAAFormにいっているみたいですが
>こういうものなのでしょうか?
そういうものです。
Showは、それ以下に記述した内容も実行してしまいます。
ShowModalならば、AAAFormが閉じるまでそれ以下の記述は実行されません。
ようするに、「イベントドリブン」ということが分かってないのです。
プログラムコード以前の問題です。
Syakeさん、ありがとうございます。
わかりました。考えてみます。
えーとさん、ありがとうございます。
ごもっともです。一応delphiの初心者向けの本を読んだのですが、
いきなりのプログラム修正で、「イベントドリブン」の表面的な事しか
わからない状態です。プログラムでイベントが発生していない時、どんな
動きをしているのかわかりません。簡単なプログラムを作って仕組みを
理解しょうと思います。
親フォームから子フォームにアクティブが移り子フォームを終了した時
delphiが自動で親フォームをアクティブにするのでしょう。
この考え方で合っていますか?
>delphiが自動で親フォームをアクティブにするのでしょう。
delphi じゃなくて、「Windows が」です。
えーとさん、ありがとうございます。
「Windowsが」ですね。合ってますか?
一応解決にしておきます。
ありがとうございました。
ツイート | ![]() |