max*_*fax 1 delphi frame tbuttonededit
德尔福XE.
有一个带按钮的编辑(带有左按钮),一个带有按钮图片的图像列表.一切都在一个框架上(如果在表格上则没问题).
在设计时没有按钮的缩进,但它在运行时.
这是一个错误吗?

谢谢!
是的,这是一个错误.出于某种原因,当编辑驻留在框架中时,.dfm文件中的Ctl3D属性TButtonEdit未正确流式传输.流媒体是导致Ctl3D被False代替True.
然后,在TEditButton.UpdateBounds以下代码中执行:
if (not FEditControl.Ctl3D) and (FEditControl.BorderStyle <> bsNone) then
begin
FGlyph.Top := 2;
Inc(NewLeft, 2);
end;
Run Code Online (Sandbox Code Playgroud)
这就是将按钮的位置向右和向下移动2个像素的原因.
您可以通过在代码中手动设置Ctl3D并强制UpdateBounds再次调用来解决此问题.我用插入器做了这个:
type
TButtonedEdit = class(ExtCtrls.TButtonedEdit)
protected
procedure Loaded; override;
end;
procedure TButtonedEdit.Loaded;
begin
inherited;
Ctl3D := True;
LeftButton.Visible := not LeftButton.Visible;
LeftButton.Visible := not LeftButton.Visible;
RightButton.Visible := not RightButton.Visible;
RightButton.Visible := not RightButton.Visible;
end;
Run Code Online (Sandbox Code Playgroud)
您可以在框架中包含它,但要确保插入的声明在声明TButtonedEdit框架之前.或者,如果错误折磨着许多帧,声明它在一个共同的单位和使用单位的帧后使用ExtCtrls.
现在,关于为什么流媒体设置不Ctl3D正确的明显问题,我没有答案.也许比我更了解形式流的人可以启发我们!
| 归档时间: |
|
| 查看次数: |
954 次 |
| 最近记录: |