Adding additional data members to forms

Adding additional data members to forms 

Suppose you want to add a new data member to a form. You want to initialize it in the constructor. What you will add is a constructor with your own name and the extra parameter:


constructor TMyForm.createIt(AOwner: TComponent; someState: boolean);
begin
  inherited create(AOwner);
  fSomeState := someState;
end;

That is OK. But, what if you want to use the initialized value of fSomeState in FormCreate method? Since create calls FormCreate, what you will get is the uninitialized value. So, for such a requirement, the proper way to do it would be:

constructor TMyForm.createIt(AOwner: TComponent; someState: boolean);
begin
  fSomeState := someState;
  inherited create(AOwner);
end;

Initially, when I posted some sample code on a newsgroup, someone claimed that this code is wrong, "As the create has not been called, the memory for the object instance is still not created." I was confused. But, then I discovered that what create does is only initialize the allocated memory. So, you can't use any code that references the base class variables before calling create. But, there is no harm if you initialize your own variables for this class. In fact, that is the only way to make sure that FormCreate gets them. Any objections?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值