IDE 편집기 컨트롤에는 방법이 IsLineElided
있습니다. Elision [*]은 붕괴 된 영역, 메서드 또는 다른 구조의 일부인 경우 숨겨진 행에 대한 IDE의 내부 용어입니다. UI에서는 이것을 "코드 접기"와 같이 "접기"라고하지만 사용자에게 표시되는 UI 용어와는 다른 내부 용어로 사용하는 것이 일반적입니다.
이 방법은 공개적으로 액세스 할 수 없습니다. 내부 TEditControl 클래스의 메서드입니다. 이를 사용하려면 IDE 메소드를 호출해야합니다. 많은 IDE 해킹과 달리, 당신은 행동을 바꿀 필요가 없기 때문에 그것을 훅 할 필요가 없습니다. 그냥 호출하십시오.
- 변환 된 이름 : 방법의 프로토 타입
@[email protected]@LineIsElided$qqri
- 다음 coreide * 확장자 .bpl 파일에있는
TLineIsElidedProc = function(Self: TObject; LineNum: Integer): Boolean;
- . 예를 들어
,
PFLineIsElided := GetProcAddress(CoreIDEHandle, StrIDELineIsElidedName);
당신은 reading loaded modules하여 핵심 IDE BPL 핸들을 얻을 수 있습니다. 첫 번째 매개 변수는 ToolsAPI 편집보기가 아닌 편집기 편집기 창이어야하지만 내부 편집기 여야합니다. 이 기사에서는 the relationship between the editor control and IOTAEditView을 보여줍니다. 라인이 생략되는 경우
는 이제 (숨겨져 즉입니까?) 요청하실 수 있습니다 플러그인에서과 같이 그러나
if PFLineIsElided(FCodeEditor, 123) then ...
, 즉 함께 지역 접혀있는 볼 퍼팅 - 또는 오히려, 접힌 영역의 맨 위 줄이 그려지기 때문에 하나 이상의 줄이 생략 된 줄을 찾으려면 약간 더 많은 논리가 필요합니다. 가장 좋은 방법은 화면상의 줄을 따라 반복하는 것입니다 (IOTAEditView.TopRow
및 BottomRow
). 당신이보고있는 라인이 접혀 있지만 당신이보고있는 라인이 아닌 경우, 당신이보고있는 라인은 접힌 구역의 대표 라인입니다 (+/- 시궁창에있는 기호)
코드 편집기에서 페인팅하는 경우 논리적 줄 번호 (코드 거터에 인쇄 된 줄 번호)와 공칭 줄 번호 (보기의 화면에 보이는 줄) 사이의 차이는 코드 elision이 이것을 제어합니다. 코드가 접히면 논리적 및 공칭 행 번호가 일치하지 않습니다. 편집 뷰는 항상 공칭 행 번호를 순서대로 그립니다. 그러나 중간에 접힌 영역이 있으면 논리 행 번호에 간격이 생깁니다.
추가 읽기 : 큰 article about integrating with the code editor, 그 중 하나는 코드 접기 및 줄 번호 처리에 대해 설명합니다. Parnassus 블로그의 코드 편집기와 통합 된 Delphi 플러그인/마법사에 관한 주제 중 두 개 중 하나입니다. 비록 접힌 코드보다 더 많은 것을 다루지 만 이런 종류의 것들을 다루어야하는 IDE 플러그인을 작성한다면 거기에 많은 유용한 자료가 있습니다. (면책 조항 : 내 블로그.)
[*]은 제쳐두고, 생략가 자동 반의어이므로 : 어느 쪽이 의미를 가진 단어 (. 일반적인 예는 '쪼개짐'이다) 한 의미 elision은 생략 또는 제거이고 다른 의미는 합치거나 합치는 것입니다.
CnPack 소스를 사용해보십시오. –
감사합니다. @DavidHeffernan, 알겠습니다. 필자가 판매하고자하는 플러그인을 작성 중이지만 비상업적 인 오픈 소스 코드를주의 깊게 살펴 봐야합니다. (a) 상업용 제품에 사용할 수 있고 (b) 상업용 친숙한 오픈 소스 라이브러리에 캡슐화 할 수있는 방식으로 독자적으로 파악하고 싶습니다. 그래서 다른 사람들이 상업용 제품과 상호 작용하는 플러그인을 작성할 수 있습니다. 코드 편집기도. –