function TsSkinManager.GetExternalSkinNames(sl: TacStrings; CreateDataObject: boolean = False; SkinType: TacSkinTypes = stAllSkins): acString;
var
stl: TacStringList;
i: Integer;
procedure AddItem(const sName: string; sImgIndex: integer);
var
iData: TacItemDrawData;
begin
if CreateDataObject then begin
iData := TacItemDrawData.Create;
iData.ImageIndex := sImgIndex;
stl.AddObject(sName, iData);
end
else
stl.Add(sName);
end;
begin
Result := '';
sl.Clear;
if sl is TStringList then
stl := TStringList(sl)
else
stl := TacStringList.Create;
for i := 0 to Length(SkinListController.SkinList) – 1 do
with SkinListController.SkinList do
if skSkinMode <> smInternal then
AddItem(skName, skImageIndex);
if sl.Count > 0 then
Result := sl[0]
else
Result := '';
stl.Sort;
if not (sl is TStringList) then begin
sl.Assign(stl);
FreeAndNil(stl);
end;
end;