2014-04-09 4 views
0

Android에서 Delphi Firemonkey TStringGrid에 매우 이상한 문제가 있습니다. TStringGrid의 이벤트가 Windows 및 Android 플랫폼에서 다르게 트리거되는 것처럼 보입니다. 예 : Windows firemonkey 응용 프로그램에서 몇 열이있는 문자열 격자가 있습니다. TStringGrid는 읽기 전용으로 설정됩니다. OnClick 이벤트 다음 코드를 :Delphi XE5 Firemonkey TStringGrid OnClick 이벤트

TStringGrid(Sender).Cells[TStringGrid(Sender).ColumnIndex,TStringGrid(Sender).Selected] := 'result'; 

안드로이드 응용 프로그램이 내가 Windows 응용 프로그램을 실행하고 문자열 그리드 셀을 클릭하면 동일한 코드 OnClick 이벤트

TStringGrid(Sender).Cells[TStringGrid(Sender).ColumnIndex, TStringGrid(Sender).Selected] := 'result'; 

그것은 선택하고 '결과'된다 exactley 셀에 기록됩니다. 나는 안드로이드 응용 프로그램을 실행하고 '결과는'이전에 작성된 것입니다 무슨 일 (탭)을 클릭 할 클릭

enter image description here

후 클릭하기 전에

enter image description here

창 선택한 셀을 클릭 한 후 클릭 한 셀이 선택됩니다.

안드로이드 enter image description here

클릭

전에 안드로이드 나는 확실하지 않다 클릭

enter image description here

후 것은 이것을 Firemonkey 버그 또는 예상되는 동작입니다. 이것을 극복 할 수있는 방법이 있습니까?

+0

엠바 카데로 포럼 (델파이 제조사)에 대해 알고 있습니까? https://forums.embarcadero.com/forum.jspa?forumID=522 – greenapps

+0

예, 1999 년부터 포럼 회원입니다. 제안 해 주셔서 대단히 감사하지만 의견은 도움이되지 않습니다. Stackoverflow는 도움을 줄 수있는 사용자가 훨씬 더 많습니다. –

답변

1

TGrid는 모바일에서 지원되는 컨트롤이 아니므로 사용하지 마십시오. 가장 좋은 대안은 아마도 사용자 정의 스타일이있는 TListBox 일 것입니다.

+0

감사합니다. 마이크. 내가 지금하고있는 일은 매우 유용한 정보이지만, 나는 그 사실에 대해별로 행복하지 않다. 안드로이드 및 윈도우의 이벤트에서 다른 동작을 일으키는 원인이 무엇인지 알고 있습니까? 해당 컨트롤이 지원되지 않지만? –

+0

죄송합니다. 필자는 데스크탑과 모바일의 차이점에 대한 자세한 내용을 들어 본 적이 없습니다. FireMonkey 소스를 추적 할 수는 있지만 어려운 여정 일 수 있습니다. –

0

스레딩 문제 일 수 있습니다. 하지만 당신이 최고의 이벤트 처리기를 사용하고 있는지 잘 모르겠습니다. 선택중인 셀을 업데이트하려고하면 TStringGrid.OnSelChanged 이벤트를 처리하는 것이 좋습니다. 이 이벤트는 셀 선택이 변경된 후에 시작됩니다.

주의 ... 마우스 클릭 (또는 손가락 탭)에 의해 엄격하게 실행되지는 않습니다. 안드로이드 장치 또는 데스크톱 플랫폼에 연결된 키보드가 있다면 화살표 키와 다른 방법을 사용할 때도 실행됩니다. 내 말이 무슨 뜻인지 알 것 같아.하지만 어쩌면 그게 너가 찾고있는 것일거야.

+0

안녕하십니까. 답변 해 주셔서 대단히 감사합니다. Unfortunatley 나는 OnSelChanged를 사용하려고했지만 다시 기대했던대로 동작하지 않습니다. 예를 들어 선택된 셀이 [1, 1]이고 셀/탭/탭 [2, 2]을 클릭하면 이벤트가 두 번 트리거됩니다. 먼저 행 변경보다 열 변경시 트리거됩니다. 이 경우 셀 [1, 2]과 [2, 2]에 '결과'가 기록됩니다. 이상한 일이지만 이것이 작동하는 방식입니다. 이 테스트는 Windows 및 Android에서도 동일하게 작동합니다. –

+0

정확히 달성하려는 것은 무엇입니까? 다른 방법이있을 수 있습니다.마우스 이벤트 (OnMouseUp, OnMouseDown)를 처리하는 것은 가능하지만 약간 복잡하고 아마도 불필요합니다. – Frazz

+0

안드로이드 카드 게임에 대한 점수 판입니다. yahtzee/yamb과 같은 다른 게임을 예로들 수 있습니다. 오지를 던질 수 있고 전략에 따라 점수를 쓸 곳을 선택할 수 있습니다. 셀을 클릭하면 해당 셀에 점수를 쓰는 것이 허용되면 프로그램은 선택한 셀에 점수를 계산하고 씁니다. 키보드로 입력하는 것을 원하지 않습니다. 실제로 나를 괴롭히는 것은 (버그가 아닐 경우) firemonkey 프레임 워크의 Windows 및 Android에서 발생하는 이벤트가 때로는 다르게 작동한다는 사실입니다. 이 주제를 다루는 문서가 있습니까? –

관련 문제