2014-07-23 4 views
2

TListView가있는 양식이 있습니다. 일부 항목을로드하고 잘 표시됩니다. 항목을 탭 (OnClick)하면 항목 세부 정보와 몇 가지 추가 옵션이있는 두 번째 양식을 표시 할 수 있습니다.Firemonkey에서 OnClick과 Swipe를 구분하는 방법 Delphi XE6을 사용하는 TListView Item

그러나 오른쪽 ("삭제"버튼을 활성화하기 위해)을 스 와이프하면 OnClick 이벤트가 발생하고 세부 양식이 표시됩니다. Detail 폼을 닫을 때 (또는 "Back"버튼을 사용할 때), TListView는 이제 Delete 버튼을 디스플레이합니다.

이렇게 짧은 버전은 스 와이프가 완료되었을 때 어떻게 OnClick 이벤트가 실행되지 않게 할 수 있습니까?

플래그를 추가하고 OnDeleteChangeVisible 및/또는 OnGesture에 플래그를 설정해 보았지만 플래그가 설정되지 않은 것처럼 보였습니다. 디버그 모드로 실행하면 이러한 이벤트가 실행되지 않습니다.

var isDelete: Boolean 

procedure TfrmTaskList.lvTaskListDeleteChangeVisible(Sender: TObject; 
    AValue: Boolean); 
begin 
    if (AValue = True) then 
    isDelete := True 
    else 
    isDelete := False; 
end; 

procedure TfrmTaskList.lvTaskListGesture(Sender: TObject; 
    const EventInfo: TGestureEventInfo; var Handled: Boolean); 
begin 
    if (EventInfo.GestureID = sgiRight) then 
    begin 
     isDelete := True 
    end 
    else 
    begin 
     isDelete := False; 
    end; 
end; 

어떤 도움, 조언, 자원이라도 대단히 감사하겠습니다. 감사합니다

+0

약간 다른 질문,하지만 궁극적으로 동일한 문제. 참조 : http://stackoverflow.com/questions/24681940/scrolling-vs-selecting-delphi-xe6 – ThisGuy

+0

@ThisGuy에게 응답 해 주셔서 감사합니다. 비슷한 (그리고 그 해결책을 임시 방편으로 구현할 수도 있습니다.)하지만 탭과 스 와이프 간의 시간 차이는 매우 짧으며 안정적으로 계산하기가 어려울 것이라고 생각합니다. 또한 길게 누르면 마우스를 길게 누르기 전에 긴 탭이 작동합니다. 지금 당장 긴 탭을 사용할 필요는 없지만 두 개가 아닌 사용 가능한 모든 제스처를 활용하기 위해보다 안정적인 솔루션을 찾는 것이 좋습니다. – JFish

답변

2

사용 OnTap 대신 OnClick 이벤트

+0

참조 http://stackoverflow.com/help/how-to-answer – SMR