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

📄 skyparser.pas

📁 SkyEdit是一个可用彩色语法来显示及编辑各种开发语言源代码的编辑器控件。
💻 PAS
📖 第 1 页 / 共 3 页
字号:
    property Words_2_Attr:     TSkySyntaxAttr read FWords_2_Attr write FWords_2_Attr ;
    property Words_3_Attr:     TSkySyntaxAttr read FWords_3_Attr write FWords_3_Attr ;
    property Words_4_Attr:     TSkySyntaxAttr read FWords_4_Attr write FWords_4_Attr ;
    property Words_5_Attr:     TSkySyntaxAttr read FWords_5_Attr write FWords_5_Attr ;
    property Words_6_Attr:     TSkySyntaxAttr read FWords_6_Attr write FWords_6_Attr ;
    property Words_7_Attr:     TSkySyntaxAttr read FWords_7_Attr write FWords_7_Attr ;
    property Words_8_Attr:     TSkySyntaxAttr read FWords_8_Attr write FWords_8_Attr ;

    property FileExtentions:   TStrings       read FFileExtentions write SetFileExtentions ;
    property LanguageName:     String         read FLanguageName   write FLanguageName     ;

    property AlphabetChars:    String         read FAlphabetChars  write SetAlphabetChars  ;
  end;

  TSkyParser = class(TCustomSkyParser)
  private
  protected
  public
  published
  end;

procedure Register;

implementation


procedure Register;
begin
  RegisterComponents('Samples', [TSkyParser]);
end;

constructor TSkySyntaxAttr.Create;
begin
  inherited Create;
  FUseDefBkgColor := False;
  FUseDefFrgColor := False;
  FBkgColor := clWindow;
  FFrgColor := clWindowText;
  FStyle    := [];
  FName     := '';
end;

constructor TSkySyntaxAttr.Create(Name: String);
begin
  inherited Create;
  FUseDefBkgColor := False;
  FUseDefFrgColor := False;
  FBkgColor := clWindow;
  FFrgColor := clWindowText;
  FStyle    := [];
  FName     := Name;
end;

procedure TSkySyntaxAttr.Assign(Source: TPersistent);
begin
  if Source is TSkySyntaxAttr then
  begin
    FUseDefBkgColor := (Source as TSkySyntaxAttr).UseDefBkgColor;
    FUseDefFrgColor := (Source as TSkySyntaxAttr).UseDefFrgColor;
    FBkgColor := (Source as TSkySyntaxAttr).BkgColor;
    FFrgColor := (Source as TSkySyntaxAttr).FrgColor;
    FStyle    := (Source as TSkySyntaxAttr).Style;
    FName     := (Source as TSkySyntaxAttr).Name;
  end
  else
    inherited Assign(Source);
end;



constructor TCustomSkyParser.Create(AOwner : TComponent);
const
  AlphaChars: String = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_';
  DigitChars: String = '0123456789';
  HexDigitChars: String = '0123456789abcdefABCDEF';
begin
  inherited Create(AOwner);


  FEscapeChar         := #0;          //字符串忽略符
  FMacroWrapChar      := #0;          //宏换行符

  FLineComments       := TStringList.Create;       //单行注释符
  FBlockCommentOns    := TStringList.Create;       //多行注释开始符
  FBlockCommentOffs   := TStringList.Create;       //多行注释结束符
  FDelimiters         := '';                       //分隔符
  FMacroSymbols       := '';                       //宏指示符
  FStringChars        := '';                       //字符串指示符
  FCharacters         := #0;                       //单个字符指示符
  //FNumberSymbols      := '';                       数字串指示符(位于单词首,且其后为数字)

  FWords_1            := TStringList.Create;       //关键字列表_1
  FWords_2            := TStringList.Create;       //关键字列表_2
  FWords_3            := TStringList.Create;       //关键字列表_3
  FWords_4            := TStringList.Create;       //关键字列表_4
  FWords_5            := TStringList.Create;       //关键字列表_5
  FWords_6            := TStringList.Create;       //关键字列表_6
  FWords_7            := TStringList.Create;       //关键字列表_7
  FWords_8            := TStringList.Create;       //关键字列表_8

  SetCaseSensitive(True);             //默认为区分大小写

  FNormalTextAttr     := TSkySyntaxAttr.Create('Normal Text'); //普通文本显示属性
  FCommentsAttr       := TSkySyntaxAttr.Create('Comment');     //注释显示属性
  FDelimitersAttr     := TSkySyntaxAttr.Create('Delimiter');   //分隔符显示属性
  FMacrosAttr         := TSkySyntaxAttr.Create('Macro');       //宏显示属性
  FStringsAttr        := TSkySyntaxAttr.Create('String');      //字符串显示属性
  FCharAttr           := TSkySyntaxAttr.Create('Character');   //单个字符显示属性
  FSpaceAttr          := TSkySyntaxAttr.Create('Space');       //空白处显示属性
  FHotLinkAttr        := TSkySyntaxAttr.Create('HotLink');     //热点显示属性(含URL)

  FInt_1_Attr         := TSkySyntaxAttr.Create('Binary Numbers');   //二进制数显示属性
  FInt_2_Attr         := TSkySyntaxAttr.Create('Octonary Numbers'); //八进制数显示属性
  FInt_3_Attr         := TSkySyntaxAttr.Create('Decimal Number');   //十进制数显示属性
  FInt_4_Attr         := TSkySyntaxAttr.Create('Hex Number');       //十六进制数显示属性
  FFloatAttr          := TSkySyntaxAttr.Create('Float Number');     //浮点数显示属性

  FWords_1_Attr       := TSkySyntaxAttr.Create('Word List 1'); //关键字_1 显示属性
  FWords_2_Attr       := TSkySyntaxAttr.Create('Word List 2'); //关键字_2 显示属性
  FWords_3_Attr       := TSkySyntaxAttr.Create('Word List 3'); //关键字_3 显示属性
  FWords_4_Attr       := TSkySyntaxAttr.Create('Word List 4'); //关键字_4 显示属性
  FWords_5_Attr       := TSkySyntaxAttr.Create('Word List 5'); //关键字_5 显示属性
  FWords_6_Attr       := TSkySyntaxAttr.Create('Word List 6'); //关键字_6 显示属性
  FWords_7_Attr       := TSkySyntaxAttr.Create('Word List 7'); //关键字_7 显示属性
  FWords_8_Attr       := TSkySyntaxAttr.Create('Word List 8'); //关键字_8 显示属性

  FFileExtentions     := TStringList.Create;                //关联文件类型
  TStringList(FFileExtentions).CaseSensitive := False;
  TStringList(FFileExtentions).Sorted        := True;
  FLanguageName       := '';                                //关联语言名称(如:C++)

  FCurrSyntaxAttr     := @FNormalTextAttr;

  //真奇怪,如果 Sorted=True ,且property中如用write FLineComments则设计期载入字符串保存时Delphi会出错! 2004.4.28
  TStringList(FLineComments).Sorted       := True;          //单行注释符
  //TStringList(FBlockCommentOns).Sorted    := True;          多行注释开始符 <2004.10.21 不可排序>
  //TStringList(FBlockCommentOffs).Sorted   := True;          多行注释结束符 <2004.10.21 不可排序>

  TStringList(FWords_1).Sorted            := True;          //关键字列表_1
  TStringList(FWords_2).Sorted            := True;          //关键字列表_2
  TStringList(FWords_3).Sorted            := True;          //关键字列表_3
  TStringList(FWords_4).Sorted            := True;          //关键字列表_4
  TStringList(FWords_5).Sorted            := True;          //关键字列表_5
  TStringList(FWords_6).Sorted            := True;          //关键字列表_6
  TStringList(FWords_7).Sorted            := True;          //关键字列表_7
  TStringList(FWords_8).Sorted            := True;          //关键字列表_8

  FInt_1_Charset := DIGIT;
  FInt_1_Chars   := DigitChars;
  FInt_2_Charset := DIGIT;
  FInt_2_Chars   := DigitChars;
  FInt_3_Charset := DIGIT;
  FInt_3_Chars   := DigitChars;
  FInt_4_Charset := HEXDIGIT;
  FInt_4_Chars   := HexDigitChars;

  FAlphabet := ALPHA;   //默认为标准字母表加_
  FAlphabetChars := AlphaChars;
end;

destructor TCustomSkyParser.Destroy;
begin
  FLineComments.Free;
  FBlockCommentOns.Free;
  FBlockCommentOffs.Free;

  FWords_1.Free;
  FWords_2.Free;
  FWords_3.Free;
  FWords_4.Free;
  FWords_5.Free;
  FWords_6.Free;
  FWords_7.Free;
  FWords_8.Free;

  FNormalTextAttr.Free;
  FCommentsAttr.Free;
  FDelimitersAttr.Free;
  FMacrosAttr.Free;
  FStringsAttr.Free;
  FCharAttr.Free;
  FSpaceAttr.Free;
  FHotLinkAttr.Free;

  FInt_1_Attr.Free;
  FInt_2_Attr.Free;
  FInt_3_Attr.Free;
  FInt_4_Attr.Free;
  FFloatAttr.Free;

  FWords_1_Attr.Free;
  FWords_2_Attr.Free;
  FWords_3_Attr.Free;
  FWords_4_Attr.Free;
  FWords_5_Attr.Free;
  FWords_6_Attr.Free;
  FWords_7_Attr.Free;
  FWords_8_Attr.Free;

  FFileExtentions.Free;

  inherited Destroy;
end;

procedure TCustomSkyParser.SetCaseSensitive(Value: Boolean);
begin
  if Value <> FCaseSensitive then
  begin
    FCaseSensitive := Value;

    TStringList(FWords_1).CaseSensitive  := Value;
    TStringList(FWords_2).CaseSensitive  := Value;
    TStringList(FWords_3).CaseSensitive  := Value;
    TStringList(FWords_4).CaseSensitive  := Value;
    TStringList(FWords_5).CaseSensitive  := Value;
    TStringList(FWords_6).CaseSensitive  := Value;
    TStringList(FWords_7).CaseSensitive  := Value;
    TStringList(FWords_8).CaseSensitive  := Value;
  end;
end;

procedure TCustomSkyParser.SetDelimiters(const Value: String);
var
  i, iLen: Integer;
begin
  FDelimiters := Value;
  FDelimiterSymbols := [];
  iLen  := Length(Value);
  for i := 1 to iLen do
    Include(FDelimiterSymbols, Value[i]);    //分隔符集合
end;

procedure TCustomSkyParser.SetMacroSymbols(const Value: String);
var
  i, iLen: Integer;
begin
  FMacroSymbols := Value;
  FMacroNoteSymbols := [];
  iLen  := Length(Value);
  for i := 1 to iLen do
    Include(FMacroNoteSymbols, Value[i]);    //宏指示符集合
end;

procedure TCustomSkyParser.SetStringChars(const Value: String);
var
  i, iLen: Integer;
begin
  FStringChars := Value;
  FStringSymbols := [];
  iLen  := Length(Value);
  for i := 1 to iLen do
    Include(FStringSymbols, Value[i]);    //字符串指示符集合
end;

procedure TCustomSkyParser.SetLineComments(Value: TStrings);
begin
  if Assigned(FLineComments) then
  begin
    FLineComments.Assign(Value);
  end;
end;

procedure TCustomSkyParser.SetBlockCommentOns(Value: TStrings);
begin
  if Assigned(FBlockCommentOns) then
  begin
    FBlockCommentOns.Assign(Value);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -