2012-04-24 24 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 2012-04-24 14:25:12

相關問題