2012-04-24 11 views
1

私はコンタクトアドレスを表示するmdi形式を持っています。それはMdiなので、私はフォームの複数のコピーを開くことができました。 しかし、明らかに、使用される変数はフォーム全体に「コピー」されます。したがって、以下のコードでは、ContactTypeIdは作成された最後のフォームに基づく値を持ちます。フォームの異なるインスタンスごとに変数に異なる値を設定する方法はありますか?

implementation 

uses DataModule, MainForm; 

{$R *.dfm} 

var ModuleUserLevel, ContactId, ContactTypeId : Integer; 
    EditMode, EditAccess, AddAccess, DeleteAccess : Boolean; 
    ContactName : String; 

constructor TContactDetailsFrm.Create(AOwner:TComponent; InContactTypeId, InContactId : Integer); 
Begin 
    Inherited Create(AOwner); 
    ContactId := InContactId; 
    ContactTypeId := InContactTypeID; 
End; 

どうすればこの問題を回避できますか?あなたは、外部使用している

答えて

12

事前に

おかげで、変数(しばしばグローバルとして、不正確なビット、と呼ばれる)が、おそらくするフォームクラスTContactDetailsFrmでのインスタンスフィールド:

type 
    TContactDetailsFrm = class(TForm) 
    private 
    FModuleUserLevel, FContactId, FContactTypeId: Integer; 
    FEditMode, FEditAccess, FAddAccess, FDeleteAccess: Boolean; 
    FContactName: string; 
    public 
    { Public-Deklarationen } 
    end; 

F Delphiのプライベートフィールドの慣用句です。

+0

ありがとうulrich、トリックを行うようです。 – mra

関連する問題