我知道,这是可能的禁用成分定制造型,但我怎么可以启用只有一个组件类样式? 例如离开整个窗体和无表层上的所有组件,并且皮肤只有TButton的。 这样的形象上。
Answer 1:
大部分的VCL控件内部使用StyleServices
全局函数来获取方法绘制控制。 所以,如果你不使用VCL的款式, StyleServices
返回一个实例到Windows API函数来绘制主题的控件(API的Uxtheme的)。 因为没有办法皮肤(适用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;
检查这种形式与风格的Vcl
现在经过的调用上述方法
DisableVclStyles(Self,'TButton');
注:使用StyleElements属性启用O禁止VCL的风格不会与像(TStringGrid,TBitBtn,TSpeedButton等)的某些部件的工作方式
文章来源: Styling only one VCL component in Delphi