私は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. linqオブジェクトが参照されているかどうかをチェック
- 2. オブジェクトがグラブされているかどうかをチェック
- 3. オブジェクトがメインスレッドで作成されているかどうかをチェックする方法
- 4. オブジェクトがまだ作成されているかどうかをチェックする方法は?
- 5. jquery Mobile:チェックボックスがチェックされているかどうかをチェック
- 6. lablgtk2で "control"が押されているかどうかをチェック
- 7. jQueryでBootstrapトグルがチェックされているかどうかチェックする方法
- 8. pyqtでチェックボックスがチェックされているかどうかチェックする方法
- 9. オブジェクトがあるかどうかをチェック
- 10. オブジェクトがKVOキーパスをリッスンしているかどうかをチェック
- 11. FormGroupがサブミットされているかどうかをチェック
- 12. C#シリアルポートデバイスが接続されているかどうかをチェック
- 13. コードが変更されているかどうかをチェック
- 14. cssボタンが選択されているかどうかをチェック
- 15. Rails - レコードが更新されているかどうかをチェック
- 16. フィールドがオーバーライドされているかどうかをチェック
- 17. サーブレットフィルタが登録されているかどうかをチェック
- 18. setOnItemClickListenerがクリックされているかどうかをチェック
- 19. フォームが提出されているかどうかをチェック
- 20. Yii2パッケージが定義されているかどうかをチェック
- 21. インラインSVGイメージがロードされているかどうかをチェック
- 22. 同じコンストラクタで2つの値が作成されているかどうかをチェックする方法は?
- 23. チェックボックスがチェックされているかどうかをチェックする方法
- 24. オブジェクトが正しく作成されたかどうかのテスト
- 25. 要素がスクロールされているかどうかチェックする
- 26. 特定のチェックボックスをチェックする方法はチェックされているかどうかチェックされていない
- 27. オブジェクトが作成されているかどうかを確認してください
- 28. オブジェクトがImmutableで作成されたかどうかを知る方法
- 29. APIが監視されているかどうかのチェック
- 30. ios - ファイルがロードされているかどうかのチェック
(。私はちょうど私と同じ回答を削除)しかし、それはTOtherForm置くように、TOtherFormを破壊するとnilに戻って、変数をリセットしてください追加する必要があります:= nilを 別のオプションは、次のPROCを使用することですTOtherFormのOnDestroyについて –
@ハサン他のフォームが削除された場合。私の印象は、いったん作成されると永遠に生き続ける形になることを意味していました。 –
正確には、しかし、単に安心して、フォームが将来(明示的に、または何らかの理由で)処分されるシナリオを予測することができます - したがって、新しいバグは導入されません。 –