2011-03-08 7 views
0

TriStateChecking을 사용하는 VST가 있습니다. 이는 데이터베이스 테이블에 연결되므로 사용자가 노드를 검사 할 때 검사 된 필드가 데이터베이스에서 업데이트됩니다. 나는 이것을 최종 사용자에게 보이지 않게하고 싶다; 그건 '저장'버튼이 아닙니다.VirtualStringTree - 노드 컬렉션이 검사 된 시간을 확인하는 방법은 무엇입니까?

현재 데이터베이스를 업데이트하기 위해 OnChecked() 이벤트를 사용하고 있습니다. 문제는 다수의 노드를 검사 할 때 #CheckedNodes SQL 업데이트 문을 실행하는 것입니다. 내가 무엇을하고 싶습니다 캡처/모든 tristatechecking 완료되면 통보 그래서 나는 단순히 나무를 스캔하고 하나의 SQL 업데이트 성명을 구성 할 수 있습니다.

tristatechecking이 완료되면 사용할 수있는 이벤트가 있습니까?

+0

모든 트라이 스테이트 검사가 완료되었습니다. virtualstringtree IIRC에서 여러 노드를 한 번에 검사 할 수있는 가능성은 없습니다. 프로 시저 또는 함수에서 여러 노드를 검사하는 경우 내 대답에서 지적한대로 검사 된 노드를 저장하기 위해 목록을 사용할 수 있습니다. – Linas

+0

그게 네가 원하는지 모르겠지만 사용자가 정의되지 않은 상태에서 정의 된 상태로 모든 확인란을 설정 한 후에 SQL 업데이트를 실행하려면 정의되지 않은 검사 상태 개수 만 저장할 수 있습니다. 로딩 후이 변수를 노드 수로 간단히 설정합니다. 그리고 OnChecked 이벤트에서이 변수를 줄이고 0에 도달하면 트리를 반복하여 SQL 문을 작성하고 실행합니다. –

답변

1

체크 된 노드를 저장할 수있는 내부 목록 만 있으면 onChecked 이벤트가 목록을 업데이트합니다. 많은 수의 노드를 검사 할 때 목록을 반복하여 SQL 문을 구성하면됩니다.

+0

이 작업을 할 수도 있지만, 실제로 모든 노드가 검사를 마쳤을 때를 알고있는 시점 이후입니다. 이것이 존재하지 않을 수도 있습니다. – Simon

+0

Check 상태가 변경되면 OnChecked 이벤트가 트리거됩니다. 그렇다면 기본적으로 노드의 총 수와 OnChecked 이벤트에서 값을 줄이는 변수를 사용하는 것이 어떻습니까? 0에 도달하면 모든 노드가 상태를 바꿀 수 있습니다. –

2

아니요, 반복 만 수행하는 유일한 방법입니다. CheckedCount 속성조차 이런 식으로 처리합니다.

0

몇 가지 테스트를하고 있지만 OnMouseUp() 이벤트 만 사용하면됩니다. 전에 확인 했어야 했어.

+0

물론입니다. OnMheckUp을 사용하면 OnChecked (또는보다 정확하게 DoCheckClick)를 알아낼 수 있습니다. 그러나 OnMouseUp은 노드를 클릭 할 때마다 트리거됩니다. OnChecked 이벤트는 눌렀을 때와 같은 노드 확인란을 통해 마우스 단추를 놓을 때만 마우스를 올리면 시작됩니다. 따라서 상태를 확인한 후에 발생하는 이벤트를 찾으려면 OnChecked를 사용하십시오. 거기에 체크 상태 변경이 완료되었습니다. –

+3

최소한 마우스 이벤트는 사용하지 마십시오. 키보드와 같은 다른 방법으로 검사되는 노드를 놓치게됩니다. –

+0

좋은 포인트 롭, 그 생각하지 않았다. 나는 재검토해야 할 것이다. – Simon

관련 문제