scrollbar 无论用鼠标点▼ 还是用鼠标点滚动条空白的位置 还是按键盘的光标↓键 都只移动一点这个怎么把这三种不同方式区分开?

解决方案 »

  1.   

    procedure TForm1.ScrollBar1Scroll(Sender: TObject; ScrollCode: TScrollCode;
      var ScrollPos: Integer);
    begin
      case ScrollCode of
        scLineUp:Dec(ScrollPos, 2);
        scLineDown: Inc(ScrollPos, 2); // 键盘的光标↓键,鼠标点▼都一样
        scPageUp: Dec(ScrollPos, 10); // 点空白处
        scPageDown: Inc(ScrollPos, 10);
      end;
    end;
      

  2.   

    scrollbar.largeChange属性即是点空白区滚动计数
      

  3.   

    To:Zswang
     键盘的光标↓键,鼠标点▼都一样
    我想做的是把这两个事件区分开,需要移动不同的ScrollPos
      

  4.   

    通过键盘的状态判断procedure TForm1.ScrollBar1Scroll(Sender: TObject; ScrollCode: TScrollCode;
      var ScrollPos: Integer);
    begin
      case ScrollCode of
        scLineUp:
          if (GetKeyState(VK_UP) and $80 = $80) then // 上键处于按下状态
            Dec(ScrollPos, 10)
          else Dec(ScrollPos, 1);
        scLineDown:
          if (GetKeyState(VK_DOWN) and $80 = $80) then // 下键处于按下状态
            Inc(ScrollPos, 10)
          else Inc(ScrollPos, 1);
        scPageUp: Dec(ScrollPos, 10); // 点空白处
        scPageDown: Inc(ScrollPos, 10);
      end;
    end;