⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ustyle.pas

📁 自己写的一个 RSS 阅读器
💻 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 + -