首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

问一个简单的控件属性自动赋值有关问题

2013-12-20 
问一个简单的控件属性自动赋值问题怎么样把B控件的某个属性,指向A控件的某个属性,当A某个属性变化的时候,B

问一个简单的控件属性自动赋值问题
怎么样把B控件的某个属性,指向A控件的某个属性,当A某个属性变化的时候,B控件的某个属性自动变化
而不需要赋值
比如A按钮的Caption变化的时候,B按钮的Caption自动也跟着变化

[解决办法]
你举的按钮Caption例子除了赋值否则做不到。
但其他的属性有可能透过重定义(reintroduced)来达成;

比如 A, B 都是 TControl,则
B := TNewControl;

TNewControl = class(TControl)
private
  FRefer: TControl;
public
  property Caption: string read GetCaption write SetCaption;
  property Refer: TControl read FRefer write FRefer;
end;

function TNewControl.GetCaption: string;
begin
  result:= FRefer.Caption;
end;

procedure TNewControl.SetCaption(Value: string);
begin
  inherited Caption:=Value;
end;

类似这样;

[解决办法]
老老实实赋值,做个函数封装起来调用,也方便,其它重构什么的代价更大
[解决办法]
如果是自动指向,并自动修改,应该是不可能吧。
[解决办法]
你要明白,B控件如果产生变化的话,必定是赋值导致他变化的,只是赋值这段代码写的位置问题而已。

但是当你需要他产生变法话时,必须需要一个触发的条件,而控件本身一般不带这种触发的条件,所以你说的没办法实现,除非你自己写个控件,当这个控件某个属性修改是,自动全局搜索所有这类控件,并改变这类控件的某个方法。

个人觉得,如果你是因为控件数量过多,单个赋值工作过于繁琐,那么建议你可以用 FindComponent() 等类似的方法,循环查找控件,并改变,减少不必要的赋值代码。

热点排行