给一个VCL定义了一个属性,在设计环境下改变属性,VCL没有反映?

shibill 2002-06-18 10:17:19
给一个VCL定义了一个属性,

property BackColor:TColor Read FBackColor Write SetBackColor;

procedure TMyControl.SetBackColor(Val:TColor);
begin
FBackColor:=Val;
DrawBackColor; //填充组件的背景。
end;

可是在使用这个VCL的时候发现一个问题,改变这个属性,VCl的颜色的颜色确实已经变了,VCL的属性列表中的backColor属性仍是原来的,编译程序,程序运行起来时,VCL的颜色仍然是原来的。 必须在设置了属性BackColor之后,再拉动一下VCL(调整一下尺寸),启动以后的VCL才是新的颜色。

是不是我短了一句话,来通知VCL,属性已经改变,就象VB中 PropertyChanged一样。



...全文
33 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
shibill 2002-06-19
  • 打赏
  • 举报
回复
我的VCL有很多属性,都有这种表现,在属性列表当中设置,一切正常。
就是通过属性页设置有问题,设置完就启动窗体上的VCL还是原来的样子,除非设置完在拖动一下VCL或调整一下尺寸,再启动就变了,这实在是奇怪。
我的属性页很简单呀,就是给组件赋值。

FCom:TMyControl;

FCom.TextNum:= ;
universe 2002-06-18
  • 打赏
  • 举报
回复
在你的赋值后Invalidate;或者refresh;update;
注意不要让系统默认的处理覆盖了你的处理,否则你就白画了
universe 2002-06-18
  • 打赏
  • 举报
回复
在空间的属性设置里可以加上update或者refresh来更新控件的输性质或者重画控件,
如果还是不行的画,可能在你设置值改变后,控件还有自动处理的过程
universe 2002-06-18
  • 打赏
  • 举报
回复
在空间的属性设置里可以加上update或者refresh来更新控件的输性质或者重画控件,
如果还是不行的画,可能在你设置值改变后,控件还有自动处理的过程
lxpbuaa 2002-06-18
  • 打赏
  • 举报
回复
procedure TMyControl.SetBackColor(Val:TColor);
begin
FBackColor:=Val;
DrawBackColor; //填充组件的背景。
Perform(CM_COLORCHANGED, 0, 0);//通知
end;


—————————————————————————————————
MaximStr := '宠辱不惊,看庭前花开花落,去留无意;
毁誉由人,望天上云卷云舒,聚散任风。';
if Not Assigned(I) then
I := TI.Create(Nil);
I.Maxim := MaximStr;
I.Explain := '可用分不够可以给我发短消息';
I.Desire := '加不加分随你';
—————————————————————————————————

5,930

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧