Delphi:如何知道TEdit何时改变大小? [英] Delphi: How to know when a TEdit changes size?

查看:339
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆