我有一个显示联系地址的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;
我该如何避免这种情况?
提前致谢
答案 0 :(得分:12)
您正在使用外部(通常称为有点不精确,作为全局)变量,但可能需要表单类TContactDetailsFrm
中的实例字段:
type
TContactDetailsFrm = class(TForm)
private
FModuleUserLevel, FContactId, FContactTypeId: Integer;
FEditMode, FEditAccess, FAddAccess, FDeleteAccess: Boolean;
FContactName: string;
public
{ Public-Deklarationen }
end;
F
是Delphi中私有字段的惯用前缀。