Updated: Dec 16, 2023
Follow on twitter
Common questions

Can I publish the skins from 'Gallery' on my website?
Am I allowed to use the skins provided in a commercial application?
I have a question about licensing - what does the "single" mean. Is it a permission for a single application, or permission for a single developer?
What kind of license is required if 2-3 developers work on one and the same user application?
Is it possible to adapt a complete program to AlphaControls avoiding a significant code change?
How do I get infos about the new version release?
What is your after sales update policy?

Installation questions

I have installed AlphaControls package. But when I restart Delphi, the packages can't get reloaded. The error message is 'Can't find acntD6_R.bpl'. I've adjusted the search-path but it doesn't help.
When installing acntD*.dpk, I got several errors of procedures and properties not found in the Hint Manager pascal file and Hint Designer file during the package build. The problem was resolved by compiling acntD*_R.dpk first, then building and installing acntD*.dpk. I'm not sure what happened...
Where should I place the AlphaControls Help file in order to use it in the IDE?
Unit "xxxx" was compiled with a different version of "xxxx".
File not found: 'xxxx.pas'

Technical questions

How can I update (repaint) MainMenu items kind in skinned mode after changes?
When I use TPNGImageList component those PNG images alpha channel area just display magenta color.
I want to have a look at the new sShowMessage, sMessageDlg and sInputQuery functions, but when I try to call them, it says: undefine
How do I give the user the option not to use skins at all if they do not want to?
EReadError with message 'Property CommonData doesn't exist'.
When I switch to a different skin in a modal form (dinamically created) only the mainform's skin is changed.
How can I find the name of a selected file or folder in the sShellListView?
How do I make sMemo without a frame? (skin mode)
How do I show a path to skins?
How do I change the font color in the TsLabel and TsLabelFX items?
Is there a way to add a button, and its handler accordingly, in the form header beside the "Minimize", "Restore" and "Close" buttons?
What is the TsBitBtn.DrawOverBorder property responsible for?
How do I load a list of available skins in the combobox?
Is there a way to make the panel invisible? (skinned mode)
My PopupMenu has no skins.
What do I need the TsSkinProvider item for?
What is the way to make the skin spread over the dialogs of message display?
Where can I get the information on a control color and its other characteristics, such as sBitBtn1?
My glyph is not displayed on the button.

Common questions


Can I publish the skins from 'Gallery' on my website?
Of course, any user can publish skins and deliver applications with skins.


Am I allowed to use the skins provided in a commercial application?
Yes of course, we do not have limitations for AlphaSkins using (exclusive skins are not published withput the author's agreement).


I have a question about licensing - what does the "single" mean. Is it a permission for a single application, or permission for a single developer?
For a single developer, amount of projects is not important.


What kind of license is required if 2-3 developers work on one and the same user application?
In this case you should have 2-3 "single licenses" (discounts are applicable if the number of licenses is more than one). Besides, there is also a "Site license" for all team or company without limitations by number of developers.


Is it possible to adapt a complete program to AlphaControls avoiding a significant code change?
All items in the package are based on standard items, that is they possess absolutely identical properties and methods. Therefore there is no need of code change. To skin the project just change all controls to the corresponding ones from the AlphaControls package. To make this procedure easier we have created the AlphaConvert utility (http://www.alphaskins.com/sfiles/alphaconvert.zip). It has changeable settings and is updated regularly.


How do I get infos about the new version release?
You can subscribe to AlphaControls newsletter (at the left bar of the home-site). You will get all info about AlphaControls updates and new releases. You can unsubscribe at any time.


What is your after sales update policy?
After purchasing of components you will receive links to the full edition of the package and first priority in technical support. You will have access to the customer private page where may be downloaded packages and received other information. If you are registered user, then you will receive all news automatically by email.

Installation questions


I have installed AlphaControls package. But when I restart Delphi, the packages can't get reloaded. The error message is 'Can't find acntD6_R.bpl'. I've adjusted the search-path but it doesn't help.
This problem is very popular... Just Delphi IDE can't find runtime library (acntD6_R.bpl).
1. The easiest solution - copy the acntD6_R.bpl file to Windows directory before Delphi starting.
2. Also you can try to add a path to this file into the PATH variable (Autoexec.bat). This problem may be caused by a very big size of this variable value.


When installing acntD*.dpk, I got several errors of procedures and properties not found in the Hint Manager pascal file and Hint Designer file during the package build. The problem was resolved by compiling acntD*_R.dpk first, then building and installing acntD*.dpk. I'm not sure what happened...
*_R*.dpk is a run-time package, used in design-time package (acntD*.dpk) and must be compiled before acntD*.dpk


Where should I place the AlphaControls Help file in order to use it in the IDE?
1. Copy the ahelp.hlp and ahelp.cnt files to the Delphi HELP subdirectory
2. In the IDE select Help|Customize to start the OpenHelp application
3. Add the ahelp.cnt file to the Contents page, add the ahelp.hlp file to the Index and Link pages
4. Save all.


Unit "xxxx" was compiled with a different version of "xxxx".
Most likely the error is caused by the files left after the previous package installation. Before you install a new version, find and delete all old files including *.bpl ones.


File not found: 'xxxx.pas'
It means that IDE cannot find 'xxxx.pas' file. Firstly, make sure this file is included in the package (it may also have Dcu extension). If the file is included but the program still returns the error, it is necessary to find out when exactly this error occurs. If it happens when the project is compiled, then most likely the pathway to this file is not registered in IDE. You just need to register it in IDE menu/Tools/Environment options/Library/Library path.

Technical questions


How can I update (repaint) MainMenu items kind in skinned mode after changes?
Try the TsSkinProvider.RepaintMenu method after all changes.


When I use TPNGImageList component those PNG images alpha channel area just display magenta color.
AlphaControls package have own support of the PNG format and powerful TsAlphaImageList component included. To use the TPngImageList component with AlphaControls package you must enable "USEPNG" key in the sDefs.inc file and recompile acnt*.dpk packages.


I want to have a look at the new sShowMessage, sMessageDlg and sInputQuery functions, but when I try to call them, it says: undefine
Just add "sDialogs" unit to your "uses" part.


How do I give the user the option not to use skins at all if they do not want to?
You can use Active property of the TsSkinManager component. If this property is False then all controls will be drawn by system (i.e. all controls will have standard kind, XP themes will be supported also if manifest is used).


EReadError with message 'Property CommonData doesn't exist'.
This is an installation problem. Just delete all old files and reinstall package (use the latest version).


When I switch to a different skin in a modal form (dinamically created) only the mainform's skin is changed.
New forms should be created with Owner parameter defined to Application. I.e. you should use code like that :

Form2 := TForm2.Create(Application);


How can I find the name of a selected file or folder in the sShellListView?
You can use FileListView.Folders[YourItemIndex].PathName FileListView.Folders[YourItemIndex] is the TacShellFolder containing a lot of other useful properties and methods. These are:

  function DisplayName(ShowExt: TacShowExtension): string;
  function ExecuteDefault: Integer;
  function ImageIndex(LargeIcon: Boolean): Integer;
  function IsFolder: Boolean;
  function IsFile: Boolean;
  function PathName: string;
  function Properties: TacShellFolderProperties;
  function Rename(const NewName: WideString): boolean;
  function SubFolders: Boolean;
  property AbsoluteID: PItemIDLIst read FFullPIDL;
  property Details[Index: integer] : string read GetDetails write SetDetails;
  property Level: Integer read FLevel;
  property Parent: TacShellFolder read FParent;
  property RelativeID: PItemIDList read FPIDL;
  property ShellFolder: IShellFolder read FIShellFolder;
  property ShellFolder2: IShellFolder2 read GeTacShellFolder2;
  property ShellDetails: IShellDetails read GetShellDetails;
  property ViewHandle: THandle read FViewHandle write FViewHandle;


How do I make sMemo without a frame? (skin mode)
sMemo1.SkinData.SkinSection := 'CHECKBOX'


How do I show a path to skins?
AlphaControls Library has an TsSkinManager item, which is responsible for skin support in the program. There are external and internal skins. External skins are those that are loaded when the program is running. Internal skins (InternalSkins property) are already located in the running file. When external skins are used, the path to the skins can be indicated in the program in the TsSkinManager property directly (C:\acnt_reg7\Skins).
The easiest way is to keep a folder with external skins in the folder of your program. Thus, if your program is located in the directory C:\Program Files\MyCoolProgram, external skins can be placed in the folder C:\Program Files\MyCoolProgram\Skins . To be able to find this folder after the program location has been changed and after it has been copied to another PC, you can write the following code in the OnCreate event:

procedure TfmMain.FormCreate(Sender: TObject);
begin
  // Show a way to the folder with skins:
  sSkinManager1.SkinDirectory := ExtractFilePath(Application.ExeName)+'Skins\';
  // Indicate a name of the skin to be used
  sSkinManager1.SkinName := 'Elegant';
  // Activate the the skin mode if it is deactivated.
  sSkinManager1.Active := True;
end;

Thus, you will make the program find the skins in the Skins folder, which in its turn is located in the folder with your program. That's that!
Alternatively, you can take advantage of using of internal skins of the TsSkinManager item at the development stage. The item contains InternalSkins property where you must load internal skins. In this case they will always be available.
Please, note that internal skins makes the final executable file of your program bigger since they are built into the program itself. The more internal skins you have, the larger the executable file is.
As a rule in my own projects I use 1 to 2 internal skins just to be on the safe side (in case an end user deletes the Skin folder containing external skins). Other skins are loaded as external.


How do I change the font color in the TsLabel and TsLabelFX items?
The TsLabel item has a UseSkinColor property which must be deactivated. À TsLabelFX has a Kind property. If KindType = ktSkin then there's a binding to the skin. If KindType = ktCustom the font color can be easily changed.


Is there a way to add a button, and its handler accordingly, in the form header beside the "Minimize", "Restore" and "Close" buttons?
Use the TsTitleBar component. This component allows to add different elements to the form title (such as buttons, tabs, captions, dividers).


What is the TsBitBtn.DrawOverBorder property responsible for?
Defines the order of drawing on a button. If the property is active (default value) the button is drawn in the first place and then its contents. If it's deactivated, first goes background, then icons, text and, lastly, frames... The property is applicable if the button has large bounds.


How do I load a list of available skins in the combobox?
Use the following function: TsSkinManager.GetSkinNames(sl:TStrings).


Is there a way to make the panel invisible? (skinned mode)
Yes, you must write 'TRANSPARENT' in the Panel.SkinData.SkinSection.


My PopupMenu has no skins.
There should be TsSkinProvider on the form and the SkinnedPopups property of the SkinManager should be set to True.


What do I need the TsSkinProvider item for?
The item is used to skin a form, menus, standard and 3rd-party controls located on this form. It means the itemshould be dropped on every form the layout of which is compliant with skin. The result of the item performance can be only seen in run-time, in design-time the form has a standard kind.


What is the way to make the skin spread over the dialogs of message display?
There are a number of functions in the sDialogs module, such as sMessageDlg, sShowMessage. Being absolutely analogous to the standard ones, they also support skins.


Where can I get the information on a control color and its other characteristics, such as sBitBtn1?
The TsSkinManager component has a specified "gd: TsGeneralDataArray" property, where each item is

  TsFontColor = record
    Color,              // Text color
    Left,               // Colors
    Top,                //   of
    Right,              //   text
    Bottom: TColor;     //   contours
  end;

  TsGenState = record
    GlowSize,                     // Size of text glowing
    ImagePercent,                 // Percent of texture in BG
    TextureIndex,
    Transparency,                 // Transparency of control
    GradientPercent: integer;     // Percent of gradient in BG
    Color,                        // Color of background
    GlowColor:       TColor;      // Color of text glowing
    FontColor:       TsFontColor; // Text color structure
    GradientArray:   TsGradArray;
  end;

  TsProps = array [0..ac_MaxPropsIndex] of TsGenState; // Array of properties

  TsGeneralData = record
    ParentClass,                 // Name of parent skin section (if exists)
    ClassName: string;           // Name of skin section
    Props: TsProps;              // Array of properties for different control states

    GiveOwnFont,                 // Gives own font color for transparent child
    ReservedBoolean: boolean;    // Reserved

    States,                      // Count of defined control states
    ScrollBorderOffset,
    // Text Glow
    GlowCount,                   // Reserved
    GlowMargin,                  // Margin for glowing effect
    // Initialized values
    BorderIndex,                 // Index of border mask
    ImgTL,                       // Indexes
    ImgTR,                       //  of
    ImgBL,                       //  corner
    ImgBR,                       //  images
    TextureNormal: integer;      // Texture index

    HotGlowColor,
    GlowColor: TColor;
    HotGlowSize,
    GlowSize,
    // Outer effect
    OuterMode: integer;
    OuterOffset: TRect;
    OuterMask,
    OuterOpacity: integer;
  end;

Use SkinData.SkinIndex property to get access to the properties of a certain control.
Below are a couple of examples of coloring in ordinary and active states:
sSkinManager1.gd[sBitBtn1.SkinData.SkinIndex].Props[0].Color
sSkinManager1.gd[sBitBtn1.SkinData.SkinIndex].Props[0].HotColor

Besides, you can get information on a certain skin item, if the SkinIndex is not known. For this purpose use the following function - sSkinManager1.GetSkinIndex(SkinSection: string): integer;
The name of a required SkinSection is transferred into it as a parameter (all standard SkinSections are listed in the sSkinProp.pas file).


My glyph is not displayed on the button.
Buttons from AlphaControls package have a full support of alpha-channell in glyphs. Some old glyphs have alphachannel filled by black color (empty) and such glyphs will be drawn as fully transparent. Such icons should be converted to format without alpha-channel or alphachannel should be converted.



If your question is not listed here - write to support@alphaskins.com, we are glad to help you always!

Installing, using and licensing the demo programs © Sergii Goncharov, Ukraine, Odessa 2004-2023