请教:
我在窗体上加了个 listview 控件,
并且新建了 3个 columns , 还添加了几行我想知道每个格子的坐标
(横坐标是不是可以通过 columns 的宽度来得到,是吗?)
竖坐标 怎么得到呢?谢谢!

解决方案 »

  1.   

    参考:  http://blog.sina.com.cn/u/589d32f50100060g
      

  2.   

    谢谢大哥
    全文如下:
    function ListViewCoordinate( // 取得ListView像素坐标位置所在的行列
      mListView: TListView; // ListView
      mPoint: TPoint // 相对ListView的像素坐标
    ): TPoint; // 返回像素坐标位置所在的行列
    //设计 Zswang 2006-08-18 wjhu111#21cn.com 尊重作者,转贴请注明出处
    var
      vOffset: TPoint;
      vHeader: THandle;
      vRect: TRect;
      I, J: Integer;
    begin
      Result := Point(-1, -1);
      if not Assigned(mListView) then Exit;
      vOffset.X := GetScrollPos(mListView.Handle, SB_HORZ);
      vOffset.Y := GetScrollPos(mListView.Handle, SB_VERT) * 14;
      if mListView.ShowColumnHeaders then
      begin
        vHeader := ListView_GetHeader(mListView.Handle);
        GetWindowRect(vHeader, vRect);
        vOffset.Y := vOffset.Y + (vRect.Bottom - vRect.Top);
      end;
      Result.Y := (mPoint.Y + vOffset.Y) div 14;
      J := 0;
      for I := 0 to mListView.Columns.Count - 1 do
      begin
        Inc(J, mListView.Columns[I].Width);
        if (vOffset.X + mPoint.X) < J then
        begin
          Result.X := I;
          Exit;
        end;
      end;
    end; { ListViewCoordinate }可是 ListView_GetHeader 这个函数找不到啊?
      

  3.   

    ListView_GetHeader函数用来获得ListView中的列头的句柄
    怎么会找不到呢