荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: duck (我是一棵树), 信区: SoftDev
标  题: [合集]请看看这段处理滚动消息的代码
发信站: 荔园晨风BBS站 (2006年01月15日22:34:58 星期天), 站内信件

☆   1  ──────────── 我是分割线 ─────────────────☆
发信人: limee (lily), 信区: SoftDev
标  题: 请看看这段处理滚动消息的代码
时  间: 2005年11月04日19:48:06 星期五

下载了一个控件的源代码,注释很少
有些地方没有完全看懂,请帮忙看看
//处理滚动条消息
//返回:  滚动条的Position
function
TCustomHexEdit.DoScroll(
   AScrollKind: TScrollKind; Msg: TWMScroll): Integer;
var
  BarFlag: Integer;
  MaxPos: Integer;
  ScrInfo: TScrollInfo;
begin
  if AScrollKind = skHorizontal then
    BarFlag := SB_HORZ
  else
    BarFlag := SB_VERT;
  FillChar(ScrInfo, SizeOf(ScrInfo), 0);
  ScrInfo.cbSize := SizeOf(ScrInfo);
  ScrInfo.fMask := SIF_ALL;
  GetScrollInfo(Handle, BarFlag, ScrInfo);
  MaxPos := ScrInfo.nMax - Integer(ScrInfo.nPage) + 1;
  case Msg.ScrollCode of
    SB_LINEUP:
      if ScrInfo.nPos > ScrInfo.nMin then
      begin
        Dec(ScrInfo.nPos);
      end;
    SB_LINEDOWN:
      if ScrInfo.nPos < MaxPos then
      begin
        Inc(ScrInfo.nPos);
      end;
    SB_PAGEUP:
      if ScrInfo.nPos > ScrInfo.nMin then
      begin
        Dec(ScrInfo.nPos, ScrInfo.nPage);
      end;
    SB_PAGEDOWN:
      if ScrInfo.nPos < MaxPos then
      begin
        Inc(ScrInfo.nPos, ScrInfo.nPage);
      end;
    SB_THUMBPOSITION,
    SB_THUMBTRACK:
      begin
  // ScrInfo.nPos := Msg.Pos;
  // Msg.Pos是16-bits的, 行数太多时会溢出
        ScrInfo.nPos := ScrInfo.nTrackPos;
      end;
    SB_LEFT:
      if ScrInfo.nPos <> ScrInfo.nMin then
      begin
        ScrInfo.nPos := ScrInfo.nMin;
      end;
    SB_RIGHT:
      if ScrInfo.nPos < MaxPos then
      begin
        ScrInfo.nPos := MaxPos;
      end;
    SB_ENDSCROLL:
      begin
        ScrInfo.nPos := ScrInfo.nPos;
      end;
  end;
  if ScrInfo.nPos < ScrInfo.nMin then
     ScrInfo.nPos := ScrInfo.nMin;
  if ScrInfo.nPos > MaxPos then
     ScrInfo.nPos := MaxPos;
  UpdateScrollPos(AScrollKind, ScrInfo.nPos);
  Result := ScrInfo.nPos;
end;


☆   2  ──────────── 我是分割线 ─────────────────☆
发信人: duck (Delphi小王子), 信区: SoftDev
标  题: Re: 请看看这段处理滚动消息的代码
时  间: 2005年11月04日20:38:39 星期五

很长。。看不下去
明天考完试家里回来时给你看看


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店