2010-06-09 4 views
0

MultiSelect가 활성화 된 cxGrid에서 사용자가 선택할 수있는 행 수를 제한하는 방법을 알고 있습니까?cxGrid (Developer Express)에서 MultiSelect에 대한 행 선택 가능

그리드가 GridMode = True로 작동합니다. 데이터의 양이 실제로 많기 때문에 (200.000 행). - CTRL + A를 누르면 그리드가 모두 선택하기 때문에 모든 행이로드됩니다.

tipps가 있습니까?

+1

안녕하세요, JPS! StackOverflow에 오신 것을 환영합니다. 좋은 질문도. 이건 두더지처럼 보입니다. CX 그리드는 지금까지 사용해 본 경험이없는 무서운 라자냐 코드 중 하나입니다. 실제 기능이있는 곳을 찾기 위해 많은 양의 소스 코드를 파고 들지 않고 유용한 어떤 것도 얻는 것은 사실상 불가능합니다. –

+2

라자냐? 양파로 가득 찬 바구니처럼 - 다른 물건이 많이 있습니다. 레이어를 벗기면 벗겨 낼 수 있습니다. 때로는 울기도합니다. ;-) –

+0

cxDBData.pas : 프로 시저 TcxDBDataSelection.SelectAll; 그게 행동입니다 .. 그리고 루프를 보면 모든 행의 로딩을 취소 할 수있는 이벤트가 없다고 생각합니다. - 아마 canselectrow 이벤트의 중단이 도움이 될거야. 너희들에게 알려 줄게. – JPS

답변

0

한 가지 방법을 선점 할 바로 가기를 작성하여 양식에서 Ctrl 키-A를 비활성화하는 것입니다 감사합니다. 그냥 생각이지만 작동해야합니다.

+0

이것은 확실히 작동하는 arround지만, 우리가 응용 프로그램에서 사용할 수있는 구성 요소 (파생 된 양식 cxgrid)를 만들기 위해 노력하고 있으므로 구성 요소 내부에서이를 해결하는 방법을 찾고 싶습니다. – JPS

1

당신의 CanSelectRecord 이벤트에서이 시도 -

if Sender.Controller.SelectedRecordCount > x then 
    AAllow := False; 

경우 'x'를 원하는 한계입니다.

+0

Gridmode False에서이 작업은 완벽합니다 (어쨌든 strg + a는 문제가 없으므로 필요 없습니다). - 이제 Gridmode True로 이벤트가 여전히 매우 자주 호출됩니다 (각 행을 asume). 그러나 "SelectedRecordCount"는 슬프게도 계속 0으로 유지됩니다. 여전히 이벤트는 시작하기에 좋은 장소 일 수 있습니다. 어쩌면 내가 데이터 구조의 어딘가에 올라가는 카운터를 찾거나 strg + a를 누를 때 자신의 계산을 시작할 수도 있습니다. – JPS

+0

이벤트에서 내 자신의 계산을했습니다. 문제가 해결되지 않습니다. 왜냐하면 그렇습니다. 각 행을 선택할 수 없기 때문입니다. 그러나 그것이 선택 과정을 멈추게하지는 않습니다. - cxGrid는 모든 행을 계속 통과하여 선택합니다. (그럼에도 불구하고 모든 것이로드되고 영원히 걸립니다) – JPS