属性的写法各有什么区别,在何种场合需要使用何种写法???(100分)

  • 主题发起人 主题发起人 魏启明
  • 开始时间 开始时间

魏启明

Unregistered / Unconfirmed
GUEST, unregistred user!
1。
property BusNo: Integer read FBusNo write FBusNo;

2。
property BusNo: Integer read FBusNo write SetBusNo;

3。
property BusNo: Integer read GetBusNo write SetBusNo;

还有
procedure TBus.SetBusNo(Value: Integer);
begin
FBusNo := Value;
end;

procedure TBus.SetBusNo(Value: Integer);
begin
if FBusNo <> Value then
begin
FBusNo := Value;
end;
end;
有和区别???
 
属性的本质是编辑器转换要操作的地址的一种方法
1。property BusNo: Integer read FBusNo write FBusNo;
这时BUSNO := SOMEVALUE的编译器实现就是 FBUSNO := SOMEVALUE
2。property BusNo: Integer read FBusNo write SetBusNo;
这时BUSNO := SOMEVALUE 的编译器实现是 SETBUSNO(SOMEVALUE)
3。property BusNo: Integer read GetBusNo write SetBusNo;
这个是1和2的综合。

有和区别???
区别就是第二个属性在保存时先查看了值是否相等,不相等则写入值。
否则直接退出。
 
一般来说, 设置属性可以直接用私有变量, 就是第1种情况,
用Set...的方法, 可以在Set...的方法中, 可以判断新旧值
是否一样, 更重要的是, 可以更新控件的界面, 例如设置了
新的颜色, 那么Set...方法可以调用更新的操作
 
属性可以读写一个函数和方法,也可以读写一个变量;
1 property BusNo: Integer read FBusNo write FBusNo;
读写变量;

2。property BusNo: Integer read FBusNo write SetBusNo;
读变量,写过程;

3。property BusNo: Integer read GetBusNo write SetBusNo;
读函数;写过程;

Bus:=3;(写)
aaa:=BusNo;(读)
明白吗?

 
大家好,这些我也是知道的,只是,
不知道在什么场合用那种模式

 
在直接写入读出的情况下使用1
如果你需要对数据进行处理或限制的话,你必须使用3或2.

举例:
如果FBusNo在程序中要作分母,就需要限制(FBusNo<>0) 1就不行
 
--不知道在什么场合用那种模式
不分场合, 解决问题, 代码越少越好
 
多人接受答案了。
 
后退
顶部