问题标签 [vcl-styles]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
908 浏览

delphi - 使用 VCL 样式对 TOpenDialog 和 TOpenPictureDialog 进行蒙皮

是否可以使用 VCL 样式对 TOpenDialog 和 TOpenPictureDialog 进行蒙皮?

0 投票
1 回答
4444 浏览

delphi - 在 Delphi 中只设计一个 VCL 组件

我知道,可以禁用组件的自定义样式,但我怎样才能只为一个组件类启用样式?例如,让整个表单和其上的所有组件不蒙皮,并且只给 TButton 蒙皮。就像在这张图片上一样。

在此处输入图像描述

0 投票
1 回答
528 浏览

delphi - TSaveTextFileDialog 和 Vcl 样式

我在 Delphi XE3 中使用TSaveTextFileDialog组件,但是当启用 Vcl 样式时,编码组合框是使用当前的 vcl 样式绘制的。

在此处输入图像描述

我该如何解决这个问题,我的意思是禁用组合框的 vcl 样式?

0 投票
0 回答
425 浏览

delphi - 带圆角的 VCL 样式

一些 VCL 样式(Delphi XE2)有圆角。如何将一种样式(例如 Metro Blue (not rounded))更改为 rounded ?

0 投票
1 回答
3191 浏览

delphi - VCL 样式从何而来?

在我的编程团队中,我们都使用 Delphi XE2 Professional。我们刚刚发现在不同的计算机上可以使用不同数量的 VCL 样式。

VCL 样式从何而来?我是否必须小心将样式从一个 Delphi 安装转移到另一个?

0 投票
1 回答
505 浏览

delphi - 在运行时更改 Delphi 样式不允许将文件拖放到表单中

我有以下允许从 Windows 删除文件的过程,删除工作正常,但是当我在运行时使用 ( TStyleManager.TrySetStyle(styleName)) 更改样式时,表单不再接受删除!这里到底有什么问题?

...

0 投票
1 回答
1926 浏览

delphi - Delphi TSplitter闪烁问题

我正在使用启用了 VCL 样式的 Delphi,我想为我的表单更改 TSplitter 的颜色。我TSplitter.Paint在插入器类中重写以绘制比默认 VCL 样式cBtnFace颜色更深的颜色,但是在调整大小时表单上有明显的闪烁。有没有办法消除这种闪烁?

我已经尝试过这些方法来尝试减少闪烁,但都没有奏效:

  1. 禁用 VCL 样式 ( TSplitter.StyleElements := [])。

  2. 更改“拆分器”的 VCL 样式位图样式设计器的对象元素,但修改此对象元素不会更改拆分器的外观。

  3. 试图处理对象WM_ERASEBKGND上的消息TControl,但我无法在我的插入器类中调用该过程。

    /li>

摆脱闪烁的任何其他想法TSplitter?据我所知,没有 DoubleBuffer 属性TSplitter或类似的东西。

更新

不幸的是,我不能分享代码库,但我可以告诉你,这是在TSplitter闪烁时设置应用程序 UI 的方式:

表单顶部还有一个工具栏和一个主菜单,但其余的 UI 组件设置为 alClient(或 OnResized 以填充空间)。

我假设由于 BackgroundPanel 位于 LeftPanel TSplitter、 和 RightPanel 后面(即 Control -> Send to Back),BackgroundPanel 上的DoubleBuffered = TrueParentBackground = False将有助于减少/消除其前面直接 UI 层上任何组件的闪烁(即TSplitter)。但是,情况似乎并非如此。

也许我会尝试将 aTPanel作为 LeftPanel TSplitter、 和 RightPanel 的父级并设置它的DoubleBuffered = Trueand ParentBackground = False。稍后我将不得不尝试并返回。所以,它看起来像这样:

最后,我应该注意,在调整大小时(窗口右侧的黑色轨迹),双缓冲 TForm 会显着减慢 UI,而不是在应用程序未调整大小时执行其他 UI 操作时。

更新 2

不幸的是,虽然我上面的方法(创建背景父级TPanel)修复了 上的闪烁TSplitter,但它也导致了其他奇怪的 UI 问题,也许@David Heffernan 在评论中提到了其中的一些问题。现在,我刚刚离开了闪烁的问题,因为拆分器只有 1px 宽,并且只有在调整宽度 + 高度时才会闪烁。

0 投票
1 回答
1317 浏览

delphi - Delphi XE2,vcl样式重新创建窗口句柄

在运行时应用新样式后,我的应用程序的 MainForm 会创建一个新的窗口句柄 - 有没有办法停止此操作或重新分配句柄,因为我收到大量以下错误:

'系统错误。代码:1400。无效的窗口句柄'

有什么方法可以操纵强制分配新句柄的过程?

我通过以下方式解决了这个问题:

我的主窗体创建了一个从未显示的看不见的“帮助器”窗体,但它确实有可视组件 - 它在尝试重绘这些可视组件时抛出句柄错误,所以我用对象替换了相关组件(注意我最初没有编写此代码)。

0 投票
1 回答
6985 浏览

delphi - 我们如何在运行时检测和更改样式?

Delphi XE3 及以下版本有适合我们应用程序的样式,这很酷。但是我注意到我们可以标记任意数量的样式,并且他们可以选择使用其中的哪个样式作为默认样式。

这意味着我们可以随意更改样式,但是如何在代码中进行呢?以及如何让用户选择在我们的软件中使用哪种风格?

0 投票
1 回答
707 浏览

delphi - painting background from TSeStyleFont

i'm trying to paint vcl style background from TSeStyleFont like in Bitmap Style Designer .. is there any way to draw the background ?

enter image description here

i have make a try : - draw the object first in a bitmap using DrawElement . - than copy current bitmap to a nother clean bitmap using 'Bitmap.Canvas.CopyRect' the problem is that : this methode does not work correctly with objects that has Glyph such as CheckBox ...