Scintilla
コード編集コンポーネントのDScintilla
、Delphi VCLラッパーをインストールしましたが、どのように使用するのかの基本的な例は見つかりません。DScintillaの構文ハイライトの例はありますか?
構文ハイライトの基本的なコード例や、コード例のリファレンスを掲載してもよろしいですか?
Scintilla
コード編集コンポーネントのDScintilla
、Delphi VCLラッパーをインストールしましたが、どのように使用するのかの基本的な例は見つかりません。DScintillaの構文ハイライトの例はありますか?
構文ハイライトの基本的なコード例や、コード例のリファレンスを掲載してもよろしいですか?
非常に面白いライブラリですが、正確に何をしたいのかと言うのは難しいです。 例えば、Pascal syntax highlighterの基本的な色設定の例です。プロジェクトフォルダ(またはアプリケーションが探す場所)に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;
私はこれをしたことはありませんが、レクサーを設定してから、SCI_SETKEYWORDSメッセージ(それは単なるスペースで区切られた文字列チェーン)を介してキーワードを送信する必要があるようです。ここで
は、C++での例です:
http://tortoisesvn.googlecode.com/svn/trunk/src/TortoiseBlame/Lexer.cpp
私はdScintilla)は(TDScintilla.SetKeyWordsに包まれていることがあるので、私はそれが同じように動作する必要がありますねていることがわかります。
いずれにしても、私はDScintillaの使い方に関するより完全なデモを見つけるのに非常に役立つことに同意します。
+1のcppの例のリンクについては、私は2つの良い答えがありましたが残念ながら1つしか受け入れられません。ありがとう – beerwin