关于两个listview的scroll同步移动的疑惑 |
|
jorping
一般會員 發表:3 回覆:5 積分:1 註冊:2006-11-15 發送簡訊給我 |
各位前辈们:
我现在想使两个listview的scroll同步移动,之前也有参考论坛里的关于这方面的资料,但是小弟在自己的程序中却出现了了点问题.: BCB 6中,我把代码放在CustomDrawItem事件中,我有看论坛中这方面的资料也是这么做的,但据我测试,在CustomDrawItem这个Event中, 它的VisibleRowCount为0,所以也就不能取它的TopItem->Index,麻烦前辈们指点小弟一下!谢谢: 下面是我的部分Code: 方法一: void __fastcall SyncScroll(TTntListView *src,TTntListView *dest) //sync scroll { if(!src->Focused()) return; tagRECT r; ::GetWindowRect(src->Handle,&r); tagPOINT pd; GetCursorPos(&pd); if(!(::PtInRect(&r,pd))) return; SCROLLINFO scroll; memset(&scroll,0,sizeof(SCROLLINFO)); scroll.fMask=SIF_ALL; scroll.cbSize=sizeof(SCROLLINFO); if(GetScrollInfo(dest->Handle,SB_VERT,&scroll)) { if((src->TopItem->Index)>(dest->TopItem->Index)) { for(int i=dest->TopItem->Index;i { SendMessage(dest->Handle,WM_VSCROLL,SB_LINEDOWN,0); } } else if((src->TopItem->Index)<(dest->TopItem->Index)) { for(int i=src->TopItem->Index;i { SendMessage(dest->Handle,WM_VSCROLL,SB_LINEUP,0); } } else return; } } 方法二: void __fastcall SyncScrollX(TTntListView *src,TTntListView *dest) //sync scroll -2 { if(src->VisibleRowCount>=src->Items->Count) return; int iTop=src->VisibleRowCount; if(iTop<=0) { //iTop=src->TopItem->Index; return ; } while(src->TopItem->Index!=dest->TopItem->Index) { SendMessage(dest->Handle, WM_VSCROLL, (src->TopItem->Index>dest->TopItem->Index)? SB_LINEDOWN:SB_LINEUP, 0); } } 其实这两种方法都大致相同,也都是参照论坛中的CODE写的. 我把函数放在CustomDrawItem事件中,但,方法一是老是运行出错,方法二是没有效果(两个SCROLL并没有同步移动).
------
Jordan.Jeng |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |