Virtual Listview とWindows7/Vista
結構前のDelphiMLでの話です。
どうも、この辺りを見るとVista以降でVirutal Listviewを使用するとLVM_GETITEMPOSITIONで返ってくる値が正しくない値になってしまうようです。
なので、TListItemのTopとかLeftの値が使えないんですね。LVM_GETITEMRECTで取得できる値は正しいようなのでこちらを使用するようにするしかないですね。
CommCtrlをusesに追加してListView_GetItemRectを利用して取得しましょう。
var rctop: TRECT; begin ListView_GetItemRect(ListView1.Handle, ListView1.TopItem.Index, rcTop, LVIR_BOUNDS); end;