2012-01-07 1 views
3

VirtualTreeView의 IVTEditLink 편집기에 둘 이상의 구성 요소를 추가하는 방법이 있습니까?VirtualTreeView의 IVTEditLink 편집기 용 구성 요소가 두 개 이상

+1

여기 정확히 묻는 것이 확실하지 않습니다. 'IVTEditLink' 편집기를 작성하고 싶다면'TPanel'과 두 개의'TEdit' 박스를 모릅니다. 당신이 염두에 두어야 할 유일한 것은 그 패널을위한'IVTEditLink' 인터페이스를 구현하고 그 편집 박스를위한 이벤트를 처리하는 것입니다. 편집 상자를'OnExit' 할 때 편집을 취소하려면, 그 이벤트에서'CancelEditNode'를해야합니다. – TLama

+0

또는 하나 이상의 'IVTEditLink'인터페이스를 구현할 수 있는지 묻는다면. 한 열에 대해서는'TComboBox'를, 다른 것에 대해서는'TDateTimePicker'를 사용하고,'OnCreateEditor'에서 열을 대문자로 사용하고 사용할 편집기를 생성하십시오;) – TLama

+0

답장을 보내 주셔서 감사합니다. 가능하다면 좋은 답변으로 귀하의 게시물을 표시 할 것입니다. – Knobik

답변

6
나는 편집자 컨테이너로 독립 양식을 사용하고 있기 때문에이 목적을 위해 IVTEditLink 개념을 떠날 것이다

:

  • 당신이 예를 들어, 사용하는 경우 TPanel을 편집기 컴포넌트 컨테이너로 사용하는 경우, 의 오른쪽 Parent을 선택해야합니다. 많은 분야와 에디터는 전혀 IVTEditLink 개념을 남길 수 있습니다 훨씬 더 쉽게 TPanel 구성 요소
  • 보다는 폼에 OnDeactivate 이벤트를 구현하는 것
  • 경계의 가상 나무의 직사각형 또는 양식의도 경계 중 하나를 겹칠 수 있습니다 여기에서 그것의 감각을 잃기 때문에; IVTEditLink은 전체 노드가 아닌 특정 노드 및 열 편집기 용으로 설계되었습니다. 당신은 단순히 OnEditing 이벤트가 도착하면 양식 편집기를 열고, 또는 더블 클릭 이벤트 등

에서하지만 다음 하나 이상의 열 노드 편집을 위해 IVTEditLink 개념을 떠나 당신을 설득하지 않은 경우 당신은 할 수 있습니다 IVTEditLink 인터페이스의 편집기로 양식을 구현하려면 this example을 확인하십시오.

+0

아주 좋은 예제 응용 프로그램입니다. 고맙습니다. –

0

OnCreateEditor 이벤트에서 사용자 정의 편집기를 만들기 만하면됩니다. 이 이벤트는 Column 매개 변수를 제공하므로 다른 열에 대해 다른 편집기를 만들 수 있습니다. 예컨대 :

procedure TForm1.OnCreateEditor(Sender: TBaseVirtualTree; Node: PVirtualNode; 
    Column: TColumnIndex; out EditLink: IVTEditLink); 
begin 
    case Column of 
    0: EditLink := TColorEditLink.Create; 
    1: EditLink := TFontEditLink.Create; 
    //etc.. 
    end; 
end; 
+0

OP는 내 의견의 첫 번째 사례를 원합니다. 둘 이상의 구성 요소에서 하나의 편집기를 작성하고 다른 열에 다른 편집기를 사용하지 마십시오. – TLama

+0

질문이 매우 불투명합니다. OP는 그의 질문을 편집하여 그가 성취하고자하는 것을 더 분명하게해야합니다. – Linas

+0

동의, 그 이유는 내 의견에 설명을 부탁했습니다;) – TLama

관련 문제