在组件中使用FThumbnaiWidth与Get和Set

时间:2013-04-12 02:36:41

标签: delphi

你应该使用:

property ThumbnailWidth: integer read FThumbnailWidth 
  write FThumbnailWidth default 170;
property ThumbnailHeight: integer read FThumbnailHeight 
  write FThumbnailHeight default 120;

property ThumbnailHeight: Integer read GetThumbnailHeight 
  write SetThumbnailHeight;
property ThumbnailWidth: Integer read GetThumbnailWidth 
  write SetThumbnailWidth;

两种方式都可以吗?

1 个答案:

答案 0 :(得分:4)

这取决于。 : - )

如果不需要副作用,您有时可以直接访问私有变量,就像在第一个样本中一样。

通常,在属性值更改时还需要执行其他操作,例如更新屏幕,执行计算,更改其他内部值等等。在这种情况下,需要gettersetter(Delphi中的readwrite方法。

我更喜欢在大多数时间使用这些方法,因为Delphi会从组件用户隐藏它们。很多时候,他们只是直接访问内部值而没有其他影响,但如果我需要稍后更改,那么可以做的事情就更少了。

使用这些方法也有其他用途。如果您需要更改其他属性,有时您需要触发(或避免)他们所拥有的副作用,您可以通过访问published属性(例如ThumbnailHeight当您更改缩略图宽度以保持比例,并需要更新显示时),或者在您不改变时访问内部字段(通过直接使用内部FThumbnailHeight)。

请参阅文档中的Defining Properties,了解Direct AccessAccess Methods之间的差异(虽然后者不会向第一个添加太多信息,但有几个链接到那里读/写方法)。