gpt4 book ai didi

delphi - Delphi中如何响应对象属性字段的变化

转载 作者:行者123 更新时间:2023-12-03 15:51:41 24 4
gpt4 key购买 nike

在 Delphi 7 中,从 TGraphicControl 派生一个新组件,并添加 TFont属性,实现 Paint 方法以使用 TFont 写入一些字符串属性(property)。安装组件。

在设计时,当您更改TFont时使用属性对话框更改属性,它将立即反射(reflect)在您的组件中。但是当您更改 TFont 的各个属性时喜欢 ColorSize ,除非您将鼠标悬停在组件上,否则不会重新绘制组件。

如何正确处理对象属性字段的更改?

最佳答案

将事件处理程序分配给 TFont.OnChange 事件。在处理程序中,Invalidate() 您的控件可触发重绘。例如:

type
TMyControl = class(TGraphicControl)
private
FMyFont: TFont;
procedure MyFontChanged(Sender: TObject);
procedure SetMyFont(Value: TFont);
protected
procedure Paint; override;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
published
property MyFont: TFont read FMyFont write SetMyFont;
end;

constructor TMyControl.Create(AOwner: TComponent);
begin
inherited;
FMyFont := TFont.Create;
FMyFont.OnChange := MyFontChanged;
end;

destructor TMyControl.Destroy;
begin
FMyFont.Free;
inherited;
end;

procedure TMyControl.MyFontChanged(Sender: TObject);
begin
Invalidate;
end;

procedure TMyControl.SetMyFont(Value: TFont);
begin
FMyFont.Assign(Value);
end;

procedure TMyControl.Paint;
begin
// use MyFont as needed...
end;

关于delphi - Delphi中如何响应对象属性字段的变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37310379/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com