2012-03-23 4 views
1


내 응용 프로그램에 EhLib DBGridEh을 사용하고 스크롤 막대를 사용하여 스크롤을 시작할 때 highliting에 문제가 발생했습니다.
그리드에서 셀을 선택하지 않으면 하이라이트가 올바르게 작동합니다.
그러나 셀을 선택하고 ScrollBar을 사용하여 스크롤을 시작하면 하이라이트 될 것입니다. 전체 원시 및 이전 원시 대신 하나의 셀만 하이라이트됩니다.
사진에서 볼 수 있습니다.
Scrolling bugEhLib DBGridEh 스크롤 문제

마우스 휠을 사용하여 그리드를 스크롤 할 때도 같은 상황이 발생했습니다. 이 문제는 응용 프로그램 메시지 처리를 추가하여 해결되었습니다.

  1. dgEditing
    옵션
  2. dgTitles
  3. dgColumnResize
  4. dgIndicator :

    procedure TMainForm.AppEventHandlerMessage(var Msg: tagMSG; 
        var Handled: Boolean); 
    var 
        i: SmallInt; 
    begin 
        if Msg.message = WM_MOUSEWHEEL then 
        begin 
        Msg.message := WM_KEYDOWN; 
        Msg.lParam := 0; 
        i := HiWord(Msg.wParam) ; 
        if i > 0 then 
         Msg.wParam := VK_UP 
        else 
         Msg.wParam := VK_DOWN; 
    
        Handled := False; 
        end; 
    end; 
    

    내 그리드에서 사용할 수있는 속성의 전체 목록이 있습니다

  5. dgRowLines
  6. dgTabs
  7. dgAlwaysShowSelection
  8. dgMultiSelect

OptionsEh

  1. dghFixed3D
  2. dghResizeWholeRightPart
  3. 0 dgColLines
  4. dghHighlightFocus
  5. dghClearSelection는
  6. dghMultiSortMarking
  7. dghEnterAsTab
  8. dghRowHighlight
+0

난 당신이'dgEditing' 당신이 이렇게 셀을 선택 전체 행을 편집 할 수 있기 때문에'dgRowSelect'를 오버라이드 (override) 할 필요가 무엇을 사용할 수있다 생각합니다. 마우스로도 전체 행이 아닌 셀을 선택할 수 있습니까? – TLama

+0

예, 할 수 있습니다. 그리고'dgEditing'도 가능하지만'dgRawSelect'는 사용할 수 없습니다. –

+0

방금 ​​EhLib DbGridEh - AllowedSelections의 매우 흥미로운 속성을 발견했습니다. 여기에'gstRecordBookmarks','gstRectangle','gstColumns','gstAll' 값을 설정할 수 있습니다. 언뜻보기에는 스크롤링이 올바르게 작동합니다. –

답변

2

IT는 DBGridEh의 특징이다. 다중 선택 영역이있는 경우 셀렉션 영역과 현재 행의 강조 셀 사이의 오해를 피하기 위해 행 하이라이트를 중지합니다.

DmitryB

+0

답변 해 주셔서 감사합니다. 그것은 매우 유용합니다. 그리고이 상황을 피하기 위해 이해한다면'AllowSelections' 옵션 =을 구성해야합니다. –