【发布时间】:2014-06-08 08:56:49
【问题描述】:
一些背景信息。我在一家非常小的公司工作,该公司最近将 Delphi 从版本 6 (!!!) 升级到 Rad Studio XE5,并且在 10 多年中情况确实发生了很大变化。大多数事情似乎在 IDE 和框架中都得到了改进,但是我们在使用新的 VCL 样式功能时遇到了很大的问题。它只是非常有缺陷,无法达到我们过去从 Borland 获得的质量。我们已经做了很多调整和变通以使事情正常进行,但一个问题目前确实困扰着我,它与 FastReport 4 中的预览表单有关。
- 工具栏周围有一个白色边框。
- 打印对话框中的控件和其他控件未对齐或位置错误
我们真的很想使用 VCL Styles 让我们的软件焕然一新,所以我们希望有解决这些问题的方法。
重现问题的步骤:
- 创建新的 VCL 表单应用程序
- 在项目 > 选项 > 应用程序 > 外观中检查 VCL 样式,例如蓝宝石 Kamri。
- 向表单添加 TfrxReport 报告组件
- 双击组件 frxReport1 并添加一个页眉带只是为了有一些内容
- 添加一个TButton并在OnClick事件中调用frxReport1.ShowReport();
- 运行程序并单击按钮。在预览表单中,您现在看到工具栏被一个看起来很奇怪的白色边框包围。
- 点击最左边的打印按钮弹出打印对话框,您可以看到分组框和取消按钮是如何定位在客户区之外的。
您有任何解决问题的解决方案或建议吗?
编辑:RRUZ 给出了一个很好的答案,但是他对问题 #1 的解决方案有一些副作用,所以我决定简化代码并手动绘制工具栏周围的边框。像这样:
procedure TToolBarStyleHookEx.PaintNC(Canvas: TCanvas);
begin
if TToolBar(Control).BorderWidth>0 then
begin
Canvas.Pen.Width := 4;
Canvas.Pen.Color := StyleServices.GetStyleColor(scWindow);
Canvas.Brush.Style := bsClear;
Canvas.Rectangle(2,2,Control.Width-2,Control.Height-1);
end;
inherited;
end;
【问题讨论】:
-
每个问题只能回答一个问题。
-
FR 有一个重新编译和更改语言的工具。看看 StartMenu ...
-
好的,我已经上传到imgur.com/PlEcLD7。因为1和2密切相关,只删除第3题可以吗?
-
我已经用我的评论回答了这个 FR 问题,所以你可以删除它;o)
-
谢谢,我会调查那个重新编译的东西。我见过它,但不知道它到底做了什么。只是“重新编译”这个词吓到我进一步调查,但我现在就看看。
标签: delphi delphi-xe5 fastreport vcl-styles