vcl-dxskinsform.md
A component that manages global look & feel settings of an application built with DevExpress controls.
TdxSkinController = class(
TcxCustomLookAndFeelController
)
A skin controller is a non-visual component designed to configure look & feel settings common to all DevExpress controls and apply skins both to forms and DevExpress controls at runtime.
If you do not need to switch between skins and palettes at runtime, you can use the design-time Project Settings dialog to select the required skin and palette application-wide.
Note
You can override global look & feel settings at the level of individual controls.
Refer to corresponding control descriptions and the following topic for detailed information: Global Application Settings.
The list below outlines key members of the TdxSkinController class. These members allow you to manage the application’s global look and feel settings and switch between skins and color palettes.
GetFormSkinReturns the name of the skin applied to the specified form.NativeStyleSpecifies if DevExpress controls and application forms use operating system-dependent draw routines to render all UI elements. If this option is enabled, all skin and color palette settings have no effect.OnSkinControlAllows you to prevent the skin controller from applying the active skin to a supported standard VCL control.OnSkinForm
Allows you to apply different skins to different forms in the application.
Tip
Alternatively, you can use the TdxSkinIgnoredFormList class to manage the global list of ignored form classes.
SkinName | SkinPaletteName | SetSkinSpecify skin and color palette applied to the application if the NativeStyle property is set to False. Only vector skins can switch between color palettes.UseSkins | UseSkinsInPopupMenusSpecify if the selected skin affects controls, forms, and pop-up menus.UseImageSetSpecifies the active skin element rendering mode for bitmap-based skins.
FormCornersAllows you to switch between corner shapes for skinned application forms.RenderMode
Specifies the active render mode at the application level.
Note
This property affects only those DevExpress controls that support multiple render modes.
ScrollMode | ScrollbarModeAllow you to switch between supported scrollbar types and scrolling modes for all controls that support them.ShowFormShadowSpecifies if skinned application forms cast a shadow.TouchModeSpecifies if Touch Mode is enabled.
AssignCopies look & feel settings between skin controller components.BeginUpdate | EndUpdateAllow you to avoid excessive redraw operations during batch global look & feel setting changes.PopulateSkinColorPalettesAllows you to obtain the list of color palettes available for the active vector skin. Bitmap-based skins do not support color palettes.RefreshRedraws skinned forms and controls in the application.ResetRestores the default global look & feel settings.
Vector skin elements consist of SVG images that render sharply regardless of the current monitor DPI.
Tip
We recommend that you use vector skins for an application that targets multi-monitor and high-DPI environments. If a vector skin is active, you can also use the SkinPaletteName property to switch between color palettes available for the skin.
Microsoft Windows 11-Inspired SkinsWXI | WXICompactMicrosoft Office-Inspired SkinsOffice2019Black | Office2019Colorful | Office2019DarkGray | Office2019WhiteUnique Skins Designed by DevExpressTheBezier | Basic
Raster skins consist of bitmap-based skin elements. The application stretches these elements at high monitor DPI, which may result in blurry UI elements. Raster skins do not support palettes.
Microsoft Office-Inspired SkinsOffice2016Colorful | Office2016Dark | Office2013DarkGray | Office2013White | Office2010Black | Office2010Blue | Office2010Silver | Office2007Black | Office2007Blue | Office2007Green | Office2007Silver | Office2007PinkUnique Skins Designed by DevExpressDevExpressDarkStyle | DevExpressStyle | Black | Blue | Pumpkin | Springtime | Summer2008 | Valentine | Xmas2008Blue | Blueprint | Caramel | Coffee | Darkroom | DarkSide | Foggy | GlassOceans | HighContrast | iMaginary | Lilian | LiquidSky | LondonLiquidSky | McSkin | Metropolis | MetropolisDark | MoneyTwins | Sharp | SharpPlus | Stardust | TheAsphaltWorld | WhiteprintMicrosoft Visual Studio-Inspired SkinsVisualStudio2013Blue | VisualStudio2013Dark | VisualStudio2013Light | VS2010Microsoft Windows 7-Inspired SkinsSeven | SevenClassic
The DevExpress Skin Engine and the VCL Styles technology are not compatible because they rely on different UI element rendering mechanisms.
Important
We do not recommend that you use Embarcadero RAD Studio® VCL Styles in any application project that uses DevExpress controls.
We strongly recommend that you use only DevExpress skins to ensure the best possible appearance of DevExpress-powered VCL applications.
All SVG icons shipped with the DevExpress Icon Library include the following CSS style names that define corresponding SVG element colors: Red, Green, Blue, Yellow, Black, and White. DevExpress controls can use these CSS style names to apply the active vector skin palette to SVG glyphs to maintain contrast. You can disable or enable palette and glyph interaction application-wide or for individual UI glyphs and image lists.
The following class properties allow you to disable or enable palette interaction for SVG glyphs application-wide:
TdxVisualRefinements.UseDisabledSkinPaletteForSVGSpecifies if UI elements apply the active vector skin palette to disabled state glyphs at the application level.TdxVisualRefinements.UseEnabledSkinPaletteForSVGSpecifies if UI elements apply the active vector skin palette to enabled state glyphs at the application level.
Many UI elements allow you to load individual glyphs or assign glyphs stored in a TcxImageList component. You can use the following properties to explicitly enable or disable palette interaction for individual UI element glyphs or image lists:
TdxGPImage.UseDisabledSkinPaletteForSVGSpecifies if the active vector skin palette affects the stored SVG glyph for the disabled UI element state.TdxGPImage.UseEnabledSkinPaletteForSVGSpecifies if the active vector skin palette affects the stored SVG glyph for the enabled UI element state.TcxCustomImageList.UseDisabledSkinPaletteForSVGSpecifies if the active vector skin palette affects stored SVG glyphs for the disabled UI element state.TcxCustomImageList.UseEnabledSkinPaletteForSVGSpecifies if the active vector skin palette affects stored SVG glyphs for the enabled UI element state.
An application project can include multiple TdxSkinController components that always share and manage the same global settings accessible through a RootLookAndFeel function call as well as the following global constants and variables:
cxIsTouchModeEnabledDetermines if the Touch Mode is enabled in an application.cxUseSkinsSpecifies if a skin is applied to an application.dxSkinFormCornersSpecifies the shape of form corners used by an application.dxSkinShowFormShadowSpecifies if a skinned application form casts a shadow.
The dxSkinControllersList global variable provides indexed access to all TdxSkinController components in the application.
Warning
We strongly recommend that you use only one TdxSkinController component instance in your project. Do not place this component on child forms and frames.
The following code example applies the WXICompact skin and its Sharpness palette to an application:
dxSkinController1.BeginUpdate;
try
dxSkinController1.UseSkins := True;
dxSkinController1.NativeStyle := False;
dxSkinController1.SkinName := 'WXICompact';
dxSkinController1.SkinPaletteName := 'Sharpness';
finally
dxSkinController1.EndUpdate;
end;
dxSkinController1->BeginUpdate();
try
{
dxSkinController1->UseSkins = true;
dxSkinController1->NativeStyle = false;
dxSkinController1->SkinName = "WXICompact";
dxSkinController1->SkinPaletteName = "Sharpness";
}
__finally
{
dxSkinController1->EndUpdate();
}
Alternatively, you can call the SetSkin procedure:
dxSkinController1.BeginUpdate;
try
dxSkinController1.NativeStyle := False;
dxSkinController1.SetSkin('WXICompact', 'Sharpness');
finally
dxSkinController1.EndUpdate;
end;
dxSkinController1->BeginUpdate();
try
{
dxSkinController1->NativeStyle = false;
dxSkinController1->SetSkin("WXICompact", "Sharpness");
}
__finally
{
dxSkinController1->EndUpdate();
}
TObject TPersistent TComponent TcxCustomComponent TcxCustomLookAndFeelController TdxSkinController
See Also