delphi的EhLib DBGridEh空间中,如何让滚动条动,游标不动。 就是说,拖动滚动条,数据在跟着滚动条动,而游标不会跟着移动,始终在所选择的那条数据上. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用内存表控件,Ehlib里面有。 继承DBGridEh组件, 写一个DBGridEhEx组件然后定义如下函数private procedure WMVScroll(var Message: TWMVScroll); message WM_VSCROLL;procedure DBGridEhEx.WMVScroll(var Message: TWMVScroll);var SI: SCROLLINFO;begin if (csDesigning in ComponentState) or not AcquireFocus then Exit; if not DataLink.Active then Exit; with Message, DataLink.DataSet do case ScrollCode of SB_LINEUP: ;//Prior; SB_LINEDOWN: ;//Next; SB_PAGEUP: ;//MoveBy( -VisibleDataRowCount ); SB_PAGEDOWN: ;//MoveBy( VisibleDataRowCount ); SB_THUMBTRACK: begin if Pos >0 then DataLink.DataSet.RecNo :=Integer( Message.Pos) else begin SI.cbSize := sizeof(SI); SI.fMask := SIF_TRACKPOS; Windows.GetScrollInfo(Handle, SB_VERT, SI); //DataLink.DataSet.RecNo := SI.nTrackPos; end; end; SB_THUMBPOSITION {,SB_THUMBTRACK}:begin case Pos of 0: //First; 1: //MoveBy( -VisibleDataRowCount ); 2: Exit; 3: //MoveBy( VisibleDataRowCount ); 4: //Last end; //end; SB_BOTTOM: //Last; SB_TOP: //First; end;end;注意: 所有会移支数据集当前游标位置的, 都已经打上注释, 这样就应该可以实现你想要的效果, 但是不知道是否表格内部有没有限制显示范围是跟当前行有关的离开当前行一定距离就不能移动之类 TListView的问题 如何通过程序修改ini文件 哪位有Delphi开发VCL组件的电子书啊? 文本文件数据库不支持中文么? 怎样去用动态生成的文本对象? 各位帮忙看看 错误提示 谢谢 小问题:如何实现label红黑间的闪动 如何做一个抽奖程序?(高分相送,不够再加!!!) 愿意为这个问题出一千分:有谁知道知道32位色下的点的颜色混合怎么算吗? 怎么解决用Installshield制作安装程序时的ODBC问题?在线等待。 做动态查询,日期型数据如何查询 求助 Delphi7组件与分布式应用开发 上的InternetExpress例子的问题
然后定义如下函数
private
procedure WMVScroll(var Message: TWMVScroll); message WM_VSCROLL;procedure DBGridEhEx.WMVScroll(var Message: TWMVScroll);
var
SI: SCROLLINFO;
begin
if (csDesigning in ComponentState) or not AcquireFocus then Exit;
if not DataLink.Active then Exit; with Message, DataLink.DataSet do
case ScrollCode of
SB_LINEUP: ;//Prior;
SB_LINEDOWN: ;//Next;
SB_PAGEUP: ;//MoveBy( -VisibleDataRowCount );
SB_PAGEDOWN: ;//MoveBy( VisibleDataRowCount );
SB_THUMBTRACK:
begin
if Pos >0 then DataLink.DataSet.RecNo :=Integer( Message.Pos)
else begin
SI.cbSize := sizeof(SI);
SI.fMask := SIF_TRACKPOS;
Windows.GetScrollInfo(Handle, SB_VERT, SI);
//DataLink.DataSet.RecNo := SI.nTrackPos;
end;
end;
SB_THUMBPOSITION {,SB_THUMBTRACK}:begin
case Pos of
0: //First;
1: //MoveBy( -VisibleDataRowCount );
2: Exit;
3: //MoveBy( VisibleDataRowCount );
4: //Last
end; //end;
SB_BOTTOM: //Last;
SB_TOP: //First;
end;
end;注意: 所有会移支数据集当前游标位置的, 都已经打上注释, 这样就应该可以实现你想要的效果, 但是不知道是否表格内部有没有限制显示范围是跟当前行有关的
离开当前行一定距离就不能移动之类