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;

我怎样才能避免这种情况?

提前致谢

4

1 回答 1

12

您正在使用外部(通常称为全局,有点不精确)变量,但可能需要表单类中的实例字段TContactDetailsFrm

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

F是 Delphi 中私有字段的惯用前缀。

于 2012-04-24T13:49:10.527 回答