掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
破棄されたフォームを知るには? (ID:32023)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
FormA を作成 (アドレス 10000) FormB を作成 (アドレス 11000) として両方Free後 FormB を作成すると アドレス (10000) に作成されてしまい FormA と FormB が同じ アドレス になってしまうので >なぜFormAにもFormBが入ってしまうのか >分からないのです。 みないな事が起きます。 (*) アドレスは適当 Notificationでもいいですが procedure TForm3.FormClose(Sender: TObject; var Action: TCloseAction); begin Action := caFree; Form3 := nil; end; のように FormClose で自分自身を指す変数に nil を代入でも平気です こんな感じにしてアドレスを見ればわかると思います。 procedure TForm1.Button1Click(Sender: TObject); begin Memo1.Lines.Clear; Memo1.Lines.Add(IntToStr(Screen.FormCount)); if CheckCreatedForm(Form2) = True then Memo1.Lines.Add ('Form2Createed') else Memo1.Lines.Add ('Form2Free'); Memo1.Lines.Add(IntToStr(Integer(Form2))); Memo1.Lines.Add(IntToStr(Screen.FormCount)); if CheckCreatedForm(Form3) = True then Memo1.Lines.Add ('Form3Createed') else Memo1.Lines.Add ('Form3Free'); Memo1.Lines.Add(IntToStr(Integer(Form3))); end; また、名前で判断させれば Free にさせなくても出来ます function checkCreatedForm2(fm:String):boolean; var i : integer; begin Result:=False; for i:=0 to Screen.FormCount-1 do begin if Screen.Forms[i].Name = fm then begin Result:=True; break; end; end; end; if Assigned(Form3) = True then begin if CheckCreatedForm2(Form3.Name) = True then Memo1.Lines.Add ('Form3Createed') else Memo1.Lines.Add ('Form3Free'); end else begin Memo1.Lines.Add ('Form3Free'); end;
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.