Delphi:如何知道TEdit何时改变大小? [英] Delphi: How to know when a TEdit changes size?
本文介绍了Delphi:如何知道TEdit何时改变大小?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
TEdit没有 OnResize 事件。
编辑框可以在不同时间调整大小,例如:
- 更改代码中的宽度/高度
- 缩放为DPI缩放的表单
- 改变字体
我确定别人我不知道。
我需要一个事件来知道编辑框何时改变了它的大小。是否有Windows消息我可以子类化编辑框和抓取?
解决方案
OnResize被声明为TControl的受保护属性。你可以使用所谓的饼干类来暴露它。这是一个黑客,但是。
键入
TControlCracker = class(TControl);
...
procedure TForm1.FormCreate(Sender:TObject);
begin
TControlCracker(Edit1).OnResize:= MyEditResize;
结束
procedure TForm1.MyEditResize(Sender:TObject);
begin
Memo1.Lines.Add(IntToStr(Edit1.Width));
结束
i need to update items around an edit box when it changes size.
TEdit has no OnResize event.
An edit box can resize at various times, e.g.:
- changing width/height in code
- form scaled for DPI scaling
- font changed
And i'm sure others i don't know about.
i need a single event to know when an edit box has changed its size. Is there a Windows message i can subclass the edit box for and grab?
解决方案
OnResize is declared as a protected property of TControl. You could expose it using a so-called "cracker" class. It's a bit of a hack, though.
type
TControlCracker = class(TControl);
...
procedure TForm1.FormCreate(Sender: TObject);
begin
TControlCracker(Edit1).OnResize := MyEditResize;
end;
procedure TForm1.MyEditResize(Sender: TObject);
begin
Memo1.Lines.Add(IntToStr(Edit1.Width));
end;
这篇关于Delphi:如何知道TEdit何时改变大小?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文