📄 ustyle.pas
字号:
unit uStyle;
interface
uses
SysUtils, Classes,ShellAPI;
type
TStyleItem = class(TObject)
private
fName:string;
fFileName:string;
public
constructor Create(aName,aFileName:string);
property Name:string read fName;
property FileName:string read fFileName;
end;
TStyle = class(TObject)
private
FStyleDir:string;
fItems:TList;
FCurrentStyle :TStyleItem;
function GetCount:Integer;
function GetStyleName(AFileName:String):String;
procedure AddStyle(aName:string;aFileName:string);
procedure LoadStyles;
function Get_Item(Index:Integer):TStyleItem;
public
constructor Create(Dir:string); virtual;
destructor Destroy; override;
property Count :Integer read GetCount;
property Item[Index:Integer]:TStyleItem read Get_Item;
property CurrentStyle:TStyleItem read FCurrentStyle;
procedure ChangeToStyle(StyleName:String);
end;
implementation
uses FastStrings;
constructor TStyle.Create(Dir:string);
begin
inherited Create;
FStyleDir:=Dir;
FItems:=TList.Create;
LoadStyles;
end;
destructor TStyle.Destroy;
begin
FItems.Free;
inherited;
end;
function TStyle.GetCount:Integer;
begin
Result:=FItems.Count;
end;
procedure TStyle.AddStyle(aName:string;aFileName:string);
var item:TStyleItem;
begin
item:=TStyleItem.Create(aName,aFileName);
FItems.Add(item);
end;
function TStyle.Get_Item(Index:Integer):TStyleItem;
begin
Result:=TStyleItem(fItems[Index]);
end;
function TStyle.GetStyleName(AFileName:String):String;
var
Filename,Ext: string;
begin
Ext := ExtractFileExt(aFilename);
Filename := ExtractFilename(aFilename);
if Length(Ext) > 0 then
Filename := Copy(Filename,1,Length(Filename)-Length(Ext));
Result := Filename;
end;
procedure TStyle.LoadStyles;
var
Sr: TSearchRec;
AFileName, ASearchPath: string;
begin
ASearchPath := FStyleDir + '*.xsl';
if FindFirst(ASearchPath, faDirectory, Sr) = 0 then
begin
repeat
if (Sr.Name = '.') or (Sr.Name = '..') or DirectoryExists(FStyleDir + Sr.Name) then
Continue;
AFileName := FStyleDir + Sr.Name;
if FileExists(AFileName) then
AddStyle(GetStyleName(Sr.Name),FStyleDir + Sr.Name);
until FindNext(Sr) <> 0;
FindClose(Sr);
end;
end;
procedure TStyle.ChangeToStyle(StyleName:String);
var i:Integer;
sName,sFileName:string;
begin
for i:= 0 to FItems.Count - 1 do // Iterate
begin
sName:=TStyleItem(fItems[i]).Name;
if sName=StyleName then
begin
FCurrentStyle:=TStyleItem(fItems[i]);
Exit;
end;
end;
end;
constructor TStyleItem.Create(aName,aFileName:string);
begin
fName := aName;
fFileName := aFileName;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -