2011-02-01 8 views
6

MyFormという名前のフォームがUnit UnitMyFromというユニットに格納されています。もちろん、Delphiは自動的にこのコードを追加しました:IDEで作成したフォーム変数を削除しても安全ですか?

TYPE 
    TMyForm = class(TForm) 
    private 
    public 
end; 

var MyForm: TMyForm; 

しかし、私はそのユニットからvar宣言を削除しました。誰かがこれがIDEに問題を引き起こすかもしれないと言った。本当ですか? IDEはその変数を必要としますか?


EDIT:

MyFormを、自動的に作成されません。ユーザーは実行時にそのフォームを作成します。

答えて

13

を持っています。それはうまく動作します。

+0

確認していただきありがとうございます。私も同じことをしています。 +1 – Ampere

+1

+1。 **自動的に自動作成リストに新しいフォームを追加しない**オプションがあることを願っています。その面倒な "var"を作成しない**というオプションがあることを望みます。ああ... –

+0

@コスミンオプションがあります。これは「フォームとデータモジュールの自動作成」と呼ばれています。それだけでは効果がないようです!明らかに私は正しいことをしていない、またはドキュメントを誤解しています。 –

3

この変数をTApplication.CreateFormメソッドに渡す必要があるため、フォームを自動的に作成する場合は、yesと答えます。

+3

より正確には、自動作成されたフォームにフォームを追加するときに_IDE_が実行する処理です。自分でやりたい場合は、好きな場所に変数を置くことができます。とにかく自動作成を過度に使用すべきではありません。 –

+0

私の編集 – Ampere

+0

ご確認ありがとうございます。 +1 – Ampere

7

プロジェクト.dprファイルのApplication.CreateForm(TMyForm, MyForm);行を削除しても問題はありません。

あなたは自動的にフォームを作成していけない場合、あなたは文句を言わない私が自動作成使用していないと私は、フォームの参照を含むグローバル変数を使用することはありません何か問題

+0

私の更新をご覧ください。 – Ampere

+1

@Altar:それから問題はありません。 – Bharat

+0

確認していただきありがとうございます。 +1 – Ampere

3

プロジェクトオプションに移動し、フォームが自動的に作成されないことを確認します。その後、フォームインスタンス変数を安全に削除できます。 (そうしないと、あなただけのコンパイルエラーを取得します。)

+0

こんにちは。私はそのフォームを自動作成しません。 +1 – Ampere

2

をあなたはDPR-ファイル内usescontains句でこのラインを維持したいことがあります(またはIDE)場合

Unit1 in 'Unit1.pas' {Form1}; 

{Form1} -commentを削除すると、フォームはShift+F12リストに表示されず、Ctrl+F12 -listにのみ表示されます。

+0

+1;私は非常に多くのプロジェクトがこれをねじ込むのを見ました。dpr; IDEはDPRを所有しており、あなたはユニットを所有しています。人々はすべての特別なコードと規約を「MainUnit」に貼り付けます)。 –

+4

@Jeroenまあ、私は同意しません。 IDEがそれをねじ込みます。私はプロジェクトにユニットを条件付きで含めることを望んでいます(例えば、異なるメモリマネージャの切り替え、異なるバージョンのDelphiのサポートなど)。 IDEはこれをねじ込みます。私は、フォームの作成と破壊をIDEがdprに許したよりも優れたコントロールを必要としており、それに関連するいくつかのVCLバグを回避する必要もあります。 –

+0

はい、私はまだDPRファイルにその行があります。 – Ampere

1

私はそれらを削除します&かなりの間、その方法で働いています(私は自動作成しないか、ほとんどのフォームの変数を使用します)。

関連する問題