Zel*_*nov 6 delphi vcl vcl-styles delphi-xe3
我知道,可以禁用组件的自定义样式,但是如何只为一个组件类启用样式?例如,将整个表格和所有组件留在上面,而皮肤只有TButton.喜欢这张图片.
RRU*_*RUZ 13
大多数VCL控件在内部使用StyleServices
全局函数来获取绘制控件的方法.因此,如果您不使用Vcl样式,则将StyleServices
实例返回到Windows API函数以绘制主题控件(UxTheme API).因为没有办法皮肤(应用Vcl样式)只有一个类控件(至少你自己绘制控件).
因此,唯一的选择是应用Vcl样式,然后禁用所有控件,除了您要查找的一种类型.
你可以使用这样的东西
procedure DisableVclStyles(Control : TControl;const ClassToIgnore:string);
var
i : Integer;
begin
if Control=nil then
Exit;
if not Control.ClassNameIs(ClassToIgnore) then
Control.StyleElements:=[];
if Control is TWinControl then
for i := 0 to TWinControl(Control).ControlCount-1 do
DisableVclStyles(TWinControl(Control).Controls[i], ClassToIgnore);
end;
Run Code Online (Sandbox Code Playgroud)
使用Vcl样式检查此表单
现在调用上面的方法之后
DisableVclStyles(Self,'TButton');
Run Code Online (Sandbox Code Playgroud)
注意:使用StyleElements属性启用o禁用vcl样式不适用于某些组件(TStringGrid,TBitBtn,TSpeedButton等)
归档时间: |
|
查看次数: |
3567 次 |
最近记录: |