2012-04-24 2 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