- GetScrollPos取得
SetScrollPos设置
DBGrid1->Refresh();
做查询的时候将DBGrid的DataSource锁定,
Query1->DisableConstraints(); //锁定
Query1->EnableConstraints(); //恢复
这样查询完毕后 DBGrid的滚动条位置不变。
查询前将Query1锁定,就是将AdoQuery1对应的DataSource同其他控件先断开联系,这样DBGrid
滚动条在查询的时候就不会动了。查询完毕后解锁就行了。
解锁前将DBGrid的状态条位置记录下来
解锁后再将他的位置强制置成你记录的位置 - 用Bookmark ( 针对Table的,对于Query应该也可以。)
void __fastcall TForm1::SearchDataBtnClick(TObject *Sender)
{
TBookmark *SavePlace;
Variant PrevValue;
SavePlace = Table1->GetBookmark();//获得当前记录的书签
//开始进行你所需要的搜索工作
// 然后移回你原来做标记的地方
// 由于你只是做搜索工作,应该是能回到原来的地方
// 值得研究的是,如果将BOOKMARK所在的记录删除,那么GotoBookmark会有怎样的后果,
// 有兴趣的话,你可以试试
Table1->GotoBookmark(SavePlace);
Table1->FreeBookmark(SavePlace);
}
当然,为了在搜索时避免控件闪烁,你可以假如DisableControls和EnableControls来做到这一点。
取的DBGrid滚动条位置
最新推荐文章于 2020-09-04 10:00:19 发布