私はDelphi 7を使用してアプリケーションを構築しています。メインフォームにボタンを1つ追加しました。そのボタンで「別のフォームを表示したい」をクリックします。ユーザーが最初にそのボタンをクリックした場合にのみ、2番目のフォームを作成しようとしています。ユーザーがそのボタンを2回クリックすると、既に作成されたフォームが表示されます。 Formオブジェクトには、すでに作成されているかどうかを直接確認できるプロパティがありますか?オブジェクトがデルファイで作成されているかどうかをチェック
5
A
答えて
10
if Assigned(Form1) then
begin
//form is created
end;
しかし、あなたのフォームをローカルに
グローバル
宣言されている場合、あなたはそれがnil
に初期化されていることを確認する必要があります。
4
フォームへの参照を保持するには、メンバーフィールドが必要です。次に、その参照が割り当てられているかどうかを確認します。このように:
function TMainForm.GetOtherForm: TMyForm;
begin
if not Assigned(FOtherForm) then
FOtherForm := TMyForm.Create(Self);
Result := FOtherForm;
end;
2
割り当て済み(Obj)は、 "Obj.free"を使用しても、それを解放した後でも依然Trueを返すことができます。 あなたのobjを保証する最善の方法は自由です。割り当て済み(obj)は "FreeAndNil(Obj)"を使用しています
0
時々フォームは無料ですが、 このような場合、Assignedのチェックはあまり良くありません。 フォームを解放し、OnCloseフォームでMyForm:= nilを設定する方法もあります。
function TMyForm.IsFormCreated: bool;
var i: Integer;
begin
Result := False;
for i := 0 to Screen.FormCount - 1 do
begin
if Screen.Forms[i] is TMyForm then
begin
Result := True;
Break;
end;
end;
end;
関連する問題
- 1. オブジェクトがグラブされているかどうかをチェック
- 2. linqオブジェクトが参照されているかどうかをチェック
- 3. jquery Mobile:チェックボックスがチェックされているかどうかをチェック
- 4. lablgtk2で "control"が押されているかどうかをチェック
- 5. pyqtでチェックボックスがチェックされているかどうかチェックする方法
- 6. オブジェクトがあるかどうかをチェック
- 7. オブジェクトがKVOキーパスをリッスンしているかどうかをチェック
- 8. コードが変更されているかどうかをチェック
- 9. C#シリアルポートデバイスが接続されているかどうかをチェック
- 10. フィールドがオーバーライドされているかどうかをチェック
- 11. 同じコンストラクタで2つの値が作成されているかどうかをチェックする方法は?
- 12. チェックボックスがチェックされているかどうかをチェックする方法
- 13. 要素がスクロールされているかどうかチェックする
- 14. オブジェクトが正しく作成されたかどうかのテスト
- 15. オブジェクトが作成されているかどうかを確認してください
- 16. チェック方法レジストリフォルダが削除されているかどうか
- 17. ios - ファイルがロードされているかどうかのチェック
- 18. APIが監視されているかどうかのチェック
- 19. チェックのためのバッチファイルを作成する.net framework 3.5 sp1がインストールされているかどうか
- 20. リンクされたSQLサーバーが実行されているかどうかをチェック
- 21. ラジオボタンがクリックされた後、ラジオボタンが既にチェックされているかどうかをチェックする方法?
- 22. サーブレット内でチェックボックスがチェックされているかどうかを調べる
- 23. コンソールアプリケーションでキーが押されているかどうかをチェックするC#
- 24. J2MEでチェックボックスがチェックされているかチェックされていないかをチェックする方法は?
- 25. サービスでアクティビティが開始されているかどうかをチェック
- 26. バリデーショナルテンプレートのパラメータパックで型が渡されているかどうかをチェック
- 27. TFS 2012でブランチがマージされているかどうかをチェック
- 28. レポがGitHub APIでスター付けされているかどうかをチェック
- 29. シミュレータでアプリが実行されているかどうかをチェック
- 30. ボックスシャドーがすでに適用されているかどうかをチェック
(。私はちょうど私と同じ回答を削除)しかし、それはTOtherForm置くように、TOtherFormを破壊するとnilに戻って、変数をリセットしてください追加する必要があります:= nilを 別のオプションは、次のPROCを使用することですTOtherFormのOnDestroyについて –
@ハサン他のフォームが削除された場合。私の印象は、いったん作成されると永遠に生き続ける形になることを意味していました。 –
正確には、しかし、単に安心して、フォームが将来(明示的に、または何らかの理由で)処分されるシナリオを予測することができます - したがって、新しいバグは導入されません。 –