2011-10-18 7 views

答えて

4

非常に面白いライブラリですが、正確に何をしたいのかと言うのは難しいです。 例えば、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; 
3

私はこれをしたことはありませんが、レクサーを設定してから、SCI_SETKEYWORDSメッセージ(それは単なるスペースで区切られた文字列チェーン)を介してキーワードを送信する必要があるようです。ここで

は、C++での例です:

http://tortoisesvn.googlecode.com/svn/trunk/src/TortoiseBlame/Lexer.cpp

私はdScintilla)は(TDScintilla.SetKeyWordsに包まれていることがあるので、私はそれが同じように動作する必要がありますねていることがわかります。

いずれにしても、私はDScintillaの使い方に関するより完全なデモを見つけるのに非常に役立つことに同意します。

+1

+1のcppの例のリンクについては、私は2つの良い答えがありましたが残念ながら1つしか受け入れられません。ありがとう – beerwin

関連する問題