请教:怎么知道 listview 每个格子的位置(横坐标和竖坐标) 请教:我在窗体上加了个 listview 控件,并且新建了 3个 columns , 还添加了几行我想知道每个格子的坐标(横坐标是不是可以通过 columns 的宽度来得到,是吗?)竖坐标 怎么得到呢?谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 参考: http://blog.sina.com.cn/u/589d32f50100060g 谢谢大哥全文如下: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 这个函数找不到啊? ListView_GetHeader函数用来获得ListView中的列头的句柄怎么会找不到呢 realplayer播放器在看电影时如何实现双击全屏。。。急! 请教一个if语句 主窗体还没调用其他窗体,这些窗体就全部出来了呢? 如何在DBGrid中给日期型字段调用日期控件? 在线等待 关于TreeView的Hint问题 请问一下有哪些传真软件好用支持WORD等的(急)? 字符过滤 写IC卡中遇到的问题 pchar, chr(x:byte):char 如何选中dbgrid的好多行,而且,点一下已经选中的一行的时候,那行就显示为不选中(不显示蓝色)? 动态生成的报表代码, 求助:怎么使 dbgrideh 自动的添加一行,谢谢!(马上送分) stringgrid 当前行颜色问题请教
全文如下:
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 这个函数找不到啊?
怎么会找不到呢