- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我应该使用WM_WINDOWPOSCHANGED;
吗? (我还没有见过 CM_WINDOWPOSCHANGED
或类似的)
TGraphicControl 是否会收到此消息的通知(它没有句柄)?正确的方法是什么?
谢谢。
<小时/>接受答案后的一个想法:
奇怪的是,或者可能是故意的,即使只有控件位置的顶部/左侧发生了变化,OnResize
也会触发:
在 Delphi 7 中,Resize
在调用 Perform(WM_WINDOWPOSCHANGED)
之后立即在 TControl.SetBounds
中调用,即使没有实际调整大小并且控件已被调用搬家了。
这是设计使然吗?
最佳答案
OnResize 事件已经在 TControl 中实现,它只是受到保护。要访问它,您只需为您的组件重新声明它。您还可以使用插入器类或“Hack”类来访问它。以 TImage 为例:
将其用于自己的组件:
TMycontrol=Class(TGraphicControl)
published
Property OnResize;
End;
使用插入器类:
type
TImage=Class(ExtCtrls.TImage)
Property OnResize;
End;
TForm3 = class(TForm)
//....
procedure TForm3.MyResize(Sender: TObject);
begin
Showmessage(Sender.ClassName)
end;
procedure TForm3.Button1Click(Sender: TObject);
begin
Image1.OnResize := MyResize;
Image1.Width := 300;
end;
就地使用“黑客”:
implementation
{$R *.dfm}
Type THack=Class(TControl)
Property OnResize;
End;
procedure TForm3.MyResize(Sender: TObject);
begin
Showmessage(Sender.ClassName)
end;
procedure TForm3.Button1Click(Sender: TObject);
begin
THack(Image1).OnResize := MyResize;
Image1.Width := 300;
end;
该事件由父控件迭代 TWinControl.AlignControls 中包含的控件触发。
关于delphi - 如何实现自定义TGraphicControl.OnResize?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20757347/
我创建了一个源自 TGraphicControl 的 delphi 组件。是否可以添加对鼠标滚轮的支持? --- 编辑 --- 我已经公开了 MouseWheel 事件,如下所示,但它们没有被调用。
当 Canvas 上没有足够的空间显示整个文本时,我想在 TGraphicControl 上绘制淡出文本,类似于 Google Chrome 上的选项卡。 因此,我不希望显示省略号文本(我知道该怎么做
我创建了一个基于 TGraphicControl 的控件,该控件是透明的且大部分是空的。它实际上在线条艺术中实现了一个简单的符号。即TLFMagicControl = class(TGraphicCo
我正在编写我的 Delphi TGraphicControl 绘制程序。 我创建一个 Canvas 并将其拉伸(stretch)到图形区域上。效果很好。 然后,我在图形区域上使用另一个 Stretch
尝试向 TGraphicControl 添加背景图像。 TCard(TGraphicControl) Private BitMap1:TBitMap; {Used to store a
我正在尝试在 TGraphicControl 组件(例如 TLabel 和 TImage)上使用 FindVCLWindow ,以便我可以在标签或状态栏中返回它们的名称,但我面临一些问题。 问题1 第
我是一名优秀的程序员,十分优秀!