Delphi 是否有DSCINTILA语法突出显示的示例?

Delphi 是否有DSCINTILA语法突出显示的示例?,delphi,scintilla,Delphi,Scintilla,我已经安装了用于代码编辑组件的DelphiVCL包装器,但我找不到任何关于如何使用它的基本示例 你可以发布一些语法突出显示的基本代码示例或代码示例的参考吗?我从来没有这样做过,但似乎你必须设置lexer,然后通过SCI_SETKEYWORDS消息发送关键字(它只是一个用单个空格分隔的字符串链) 下面是C++中的一个示例: 我看到dscintila用tdscintlla.SetKeyWords()包装了它,所以我想它应该以同样的方式工作 无论如何,我同意找到一个关于如何使用DSCINTILA的更

我已经安装了用于代码编辑组件的DelphiVCL包装器,但我找不到任何关于如何使用它的基本示例


你可以发布一些语法突出显示的基本代码示例或代码示例的参考吗?

我从来没有这样做过,但似乎你必须设置lexer,然后通过SCI_SETKEYWORDS消息发送关键字(它只是一个用单个空格分隔的字符串链)

下面是C++中的一个示例:

我看到dscintila用tdscintlla.SetKeyWords()包装了它,所以我想它应该以同样的方式工作


无论如何,我同意找到一个关于如何使用DSCINTILA的更完整的演示会非常有帮助。

非常有趣的库,但很难说您到底想用它做什么。 例如,下面是Pascal语法荧光灯的一些基本颜色设置示例。请注意,您需要将
SciLexer.dll
库放在项目文件夹中(或应用程序查找它的文件夹中)

这个库包装器提供了许多具有有意义名称的功能,因此我认为最好是自己浏览它们

uses
  DScintillaTypes, DScintilla;

procedure TForm1.Button1Click(Sender: TObject);
var
  Scintilla: TDScintilla;
begin
  Scintilla := TDScintilla.Create(Self); // creating it dynamically, it's also available as a component, so you don't need to do this
  Scintilla.DllModule := 'SciLexer.dll'; // the syntax library
  Scintilla.Align := alClient;           // object alignment to the whole parent
  Scintilla.Parent := Self;              // setting up the parent
  Scintilla.SetLexer(SCLEX_PASCAL);      // and setting the syntax highlighter, see SCLEX_ types in DScintillaTypes.pas

  Scintilla.StyleSetBack(STYLE_DEFAULT, clBlack); // setting up the default background color
  Scintilla.StyleSetFore(SCE_PAS_DEFAULT, clWhite); // Pascal specific default fore color
  Scintilla.StyleSetBack(SCE_PAS_DEFAULT, clBlack); // Pascal specific default back color
  Scintilla.StyleSetFore(SCE_PAS_IDENTIFIER, clYellow); // Pascal specific identifier fore color
  Scintilla.StyleSetBack(SCE_PAS_IDENTIFIER, clBlack); // Pascal specific identifier back color
  Scintilla.StyleSetBold(SCE_PAS_IDENTIFIER, True); // Pascal specific identifier bold font style
  Scintilla.StyleSetUnderline(SCE_PAS_IDENTIFIER, True); // Pascal specific identifier underline font style
  Scintilla.StyleSetFore(SCE_PAS_COMMENT, RGB(243, 236, 255)); // etc.
  Scintilla.StyleSetBack(SCE_PAS_COMMENT, clBlack);
  Scintilla.StyleSetFore(SCE_PAS_COMMENT2, RGB(243, 236, 255));
  Scintilla.StyleSetBack(SCE_PAS_COMMENT2, clBlack);
  Scintilla.StyleSetFore(SCE_PAS_COMMENTLINE, RGB(243, 236, 255));
  Scintilla.StyleSetBack(SCE_PAS_COMMENTLINE, clBlack);
  Scintilla.StyleSetFore(SCE_PAS_NUMBER, RGB(243, 236, 255));
  Scintilla.StyleSetBack(SCE_PAS_NUMBER, clBlack);
  Scintilla.StyleSetFore(SCE_PAS_HEXNUMBER, RGB(243, 236, 255));
  Scintilla.StyleSetBack(SCE_PAS_HEXNUMBER, clBlack);
  Scintilla.StyleSetFore(SCE_PAS_WORD, RGB(243, 236, 255));
  Scintilla.StyleSetBack(SCE_PAS_WORD, clBlack);
  Scintilla.StyleSetFore(SCE_PAS_STRING, RGB(243, 236, 255));
  Scintilla.StyleSetBack(SCE_PAS_STRING, clBlack);
  Scintilla.StyleSetFore(SCE_PAS_STRINGEOL, RGB(243, 236, 255));
  Scintilla.StyleSetBack(SCE_PAS_STRINGEOL, clBlack);
  Scintilla.StyleSetFore(SCE_PAS_CHARACTER, RGB(243, 236, 255));
  Scintilla.StyleSetBack(SCE_PAS_CHARACTER, clBlack);
  Scintilla.StyleSetFore(SCE_PAS_OPERATOR, clRed);
  Scintilla.StyleSetBack(SCE_PAS_OPERATOR, clBlack);
  Scintilla.StyleSetFore(SCE_PAS_ASM, clRed);
  Scintilla.StyleSetBack(SCE_PAS_ASM, clBlack);
end;

+1对于cpp示例链接,我有两个很好的答案,但不幸的是,只有一个可以接受。谢谢