2012-11-08 4 views
2

편집 가능한 항목이있는 TreeView가 있습니다. 선택한 후 F2 키를 누르거나 아무 항목이나 클릭하면 inplace 편집기가 나타납니다.TTreeView : 항목의 inplace 편집기 텍스트를 변경하는 방법?

편집기를 표시하기 전에 표시되는 텍스트를 어떻게 변경할 수 있습니까? 예를 들어 내 트리 항목의 텍스트는 Point 1 (300, 450)이지만 내부 편집자에게만 Point 1 만 표시되도록하고 싶습니다.

procedure TForm1.TreeViewEditing(Sender: TObject; Node: TTreeNode; 
    var AllowEdit: Boolean); 
begin 
    AllowEdit := True; 
    Node.Text := 'text to edit'; 
end; 

그러나 인플레 이스 편집기의 텍스트는 변경되지 않으며, 트리 항목의 텍스트 만 편집을 취소 한 후 업데이트 :

나는 그런 OnEditing 이벤트를 잡으려고 노력했다. 이 작업을 올바르게 수행하는 방법은 무엇입니까?

답변

7

봅니다 다음 정장 만약 당신이 :

uses 
    Winapi.CommCtrl; 

procedure TForm1.TreeView1Editing(Sender: TObject; Node: TTreeNode; var AllowEdit: Boolean); 
var 
    EditHandle: THandle; 
    S: string; 
begin 
    AllowEdit := True; 
    S := 'text to edit'; 
    EditHandle := TreeView_GetEditControl((Sender as TTreeView).Handle); 
    SendMessage(EditHandle, WM_SETTEXT, 0, LParam(PChar(S))); 
end; 
+0

좋아! 대단히 감사합니다. – Andrew