Skip to main content

How to Add Custom Elements to Skins

  • 2 minutes to read

Skins are shipped with the pre-defined (default) elements, properties, and colors. You are free to change them, or add custom elements via the Skin Editor, or programmatically.

This topic describes how you can add custom elements to skins, and access these elements in code. Refer to the How to Add Custom Colors and Properties to Skins help topic, to learn more.

In skins, elements are divided into groups according to target products, common use, etc. To add custom elements to a group via the Skin Editor, select the group or one of its elements, and click the Add Element toolbar button or the Project | Add Element menu item.

This will open a window prompting you for a unique element name. To add the element to all skins within a project, check a corresponding option in this window.

To delete skin elements, select the desired skin element, and click the Delete Element toolbar button or the Project | Delete Element menu item.

In code, you can use the following product group methods to perform the same tasks.

Objective

Method

Adding skin elements

AddElement

AddElementEx

Accessing skin elements

Elements

GetElementByName

Deleting skin elements

Delete

RemoveElement

The following code example demonstrates how to manage custom skin elements.

uses
  ..., cxLookAndFeels, dxSkinInfo, cxLookAndFeelPainters;
var
  APainter: TcxCustomLookAndFeelPainter;
  ASkinInfo: TdxSkinInfo;
  ASkin: TdxSkin;
  AFormGroup: TdxSkinControlGroup;
  AFormLogo, AFormLegacyLogo: TdxSkinElement;
begin
  // Getting a painter that corresponds to the MySkin_MoneyTwins1 skin
  if cxLookAndFeelPaintersManager.GetPainter('MySkin_MoneyTwins1', APainter) then
  begin
    // Getting a painter's skin data
    APainter.GetPainterData(ASkinInfo);
    ASkin := ASkinInfo.Skin;
    // Getting the Form product group
    AFormGroup := ASkin.GetGroupByName('Form');
    // Adding a Form.FormLogo skin element
    AFormLogo := AFormGroup.AddElement('FormLogo');
    // Getting the Form.FormLegacyLogo element
    AFormLegacyLogo := AFormGroup.GetElementByName('FormLegacyLogo');
    if AFormLegacyLogo <> nil then
    begin
      // Assigning Form.FormLogo element properties from the Form.FormLegacyLogo element
      AFormLogo.Assign(AFormLegacyLogo);
      AFormGroup.RemoveElement(AFormLegacyLogo);
    end;
  end;
end;

After this, you can use the Form.FormLogo skin element when implementing new appearance options, in control painters built with the Skin Editor.

See Also