小编Min*_*ngo的帖子

FastReport 4和VCL样式错误

一些背景信息.我在一家非常小的公司工作,他最近将Delphi从版本6(!!!)升级到Rad Studio XE5,并且在10年多的时间里确实发生了很大变化.IDE和框架中的大多数内容似乎都有所改进,但我们在使用新的VCL样式功能时遇到了很大问题.这只是非常马车,并且与我们过去从Borland回来的质量不相上下.我们已经做了很多调整和解决方法以使事情正常工作但是目前我遇到的一个问题就是烦恼,它与FastReport 4中的预览表格有关.

  1. 工具栏周围有一个白色边框.
  2. 打印对话框中的控件和其他控件未对齐或位置错误

我们真的想使用VCL样式为我们的软件带来全新的外观,所以我们希望有这些问题的解决方案.

重现问题的步骤:

  1. 创建一个新的VCL表单应用程序
  2. 检查项目>选项>应用程序>外观中的VCL样式,例如Sapphire Kamri.
  3. 将TfrxReport报告组件添加到表单
  4. 双击组件frxReport1并添加页眉带以获得一些内容
  5. 添加TButton并在OnClick事件中,调用frxReport1.ShowReport();
  6. 运行程序并单击按钮.在预览表单中,您现在看到工具栏被一个看起来很奇怪的白色边框包围.
  7. 单击最左侧的打印按钮以显示打印对话框,您可以看到组框和取消按钮如何位于客户区域之外.

您有解决问题的任何解决方案或建议吗?

在此输入图像描述

编辑: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;
Run Code Online (Sandbox Code Playgroud)

delphi fastreport vcl-styles delphi-xe5

4
推荐指数
1
解决办法
2279
查看次数

标签 统计

delphi ×1

delphi-xe5 ×1

fastreport ×1

vcl-styles ×1