2014-07-06 1 views

답변

3

LVN_BEGINLABELEDIT 알림이 발생하는 정확한 방법을 쉽게 감지 할 수있는 방법이 없습니다. 목록보기의 내부 편집을 트리거하는 알림은 LVN_BEGINLABELEDIT입니다.

그럼, 아마 약간 해킹 된 해결책을 찾아야 할 것 같습니다. 양식에 Boolean 필드를 추가하십시오 (예 : FCanEditListView). 편집 모드를 실행할 때마다 다음, 나중에 False에 복귀 한 다음 편집 모드를 실행하기 직전에이 플래그 True을 설정 :

procedure TForm1.Button1Click(Sender: TObject); 
var 
    Item: TListItem; 
begin 
    Item := ListView1.Selected; 
    if Assigned(Item) then 
    begin 
    FCanEditListView := True; 
    Item.EditCaption; 
    FCanEditListView := False; 
    end; 
end; 

는 다음과 같이 동작을 전환, 목록보기의 OnEditing 이벤트에 대한 처리기를 추가 그래서 :

procedure TForm1.ListView1Editing(Sender: TObject; Item: TListItem; 
    var AllowEdit: Boolean); 
begin 
    AllowEdit := FCanEditListView; 
end; 
관련 문제