2013-10-30 1 views
6

사용 : Delphi XE2, Windows VCL 양식 응용 프로그램, 32 비트SynEdit : 시작 및 정지 위치에서 여러 텍스트 영역의 배경 강조 표시를 수행하는 방법?

텍스트를 표시하려면 SynEdit 컨트롤을 사용하고 있습니다. 나는 HTML과 JS 코드를 올바르게 강조하기 위해 이미 컨트롤과 함께 TSynHTMLSyn 구문 하이 라이터를 사용하고있다.

또한이 텍스트 (Angus Johnson의 TDiff 사용)에 삭제, 추가 및 변경과 같은 다른 버전의 텍스트를 사용하여 diff 작업을 수행하고 있습니다. 이 유형의 변경 사항 각각을 다른 색상, 즉 삭제를 위해 빨간색으로, 추가를 위해 파란색으로, 변경 사항에 대해 녹색으로 강조해야합니다.

내 질문 :

  1. 는 구현 할 수 있습니까?
  2. 그렇다면 어떻게됩니까?

TIA.

+0

나는 정말로 SynEdit 사용자가 아니지만 다른 도움이되지 않는다면 나는'E.SelStart : = x; E.SelEnd : = y; E.SelectedColor : = c;'(클래스의 멤버 세트 [here] (http://z505.com/synedit/synedit_doc/tsynedit.html)와 [here] (http://z505.com/synedit/ synedit_doc/tcustomsynedit.html)). –

+0

이 작동하지만 필요한 : 1) 강조 표시 할 여러 선택 2) 사용자가 컨트롤에서 다른 텍스트를 선택하려면 클릭해도 이전에 강조 표시된 텍스트 강조 표시된 상태로 유지해야합니다. –

+0

Lazarus IDE에서 사용하는'TSynEdit' 포크를 확인 했습니까? 편집 할 때 계속 강조 표시되는 여러 블록을 처리 할 수 ​​있다고 생각합니다. –

답변

1

예를 들어 TSynEdit.onSpecialLineColors 이벤트를 사용해보세요.

procedure TfmRunScript.EditorSpecialLineColors(Sender: TObject; 
    Line: Integer; var Special: Boolean; var FG, BG: TColor); 
begin 
if Line = ErrorLine then 
    begin 
    Special := True; 
    BG := clMaroon; 
    FG := clWhite; 
    end; 
end; 
+1

버퍼 위치 (시작 및 중지)를 기준으로 한 줄의 단어를 강조해야합니다. 나는이 사건이 나를 위해 어떻게 작용 하는지를 보지 못했다. –

관련 문제