dbgrid 滚动条

ntjrr 2010-08-25 07:47:07
dbgrid 滚动条在平常查询如查询一百条记录能正常出现,但改变查询条件查询到一次空记录后,滚动条不见了(空记录不见滚动条也属正常)关键是再回过头来查出刚才的一百条记录,滚动条也会不见了!
...全文
157 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Rui_Treasure 2011-04-21
  • 打赏
  • 举报
回复
谁可以把滚动条的颜色改变一哈啊 。。。。。
ntjrr 2010-08-27
  • 打赏
  • 举报
回复
每次在查询到数据后加了一行ShowScrollBar(dbgrid1.Handle,SB_BOTH,true),有点觉得画蛇添足,但好象也是不是办法的办法。
ntjrr 2010-08-26
  • 打赏
  • 举报
回复
继续在测试中,好奇怪的现象:
DBGRID1连DataSource1连ADOQuery1
查询出一百条记录,上下滚动条出现,查询到空记录,不出现(前两步完全正常)再次查询刚才一百条,滚动条不出现了,再查询一下空记录,再查询一百条,滚动条又回来了。
ntjrr 2010-08-26
  • 打赏
  • 举报
回复
但当数据量相当大时还是拖滚动条快速定位到附近来得方便。所以我现在最好是先要求滚动条能稳定的出现。
pilicat 2010-08-25
  • 打赏
  • 举报
回复
嗯,1楼兄弟的方法不错,原生的DBGrid并不支持鼠标滚轮,加入上述代码后,就给它加上了鼠标滚轮翻页的功能。
kye_jufei 2010-08-25
  • 打赏
  • 举报
回复
我給個建議:因為你使用的是DBGRID組件,查詢時(當數據量很多時,需要拖動滾動條來查看數據)。。。這樣不太方便,建議LZ直接寫MOUSE滾動事件來回滾數據。。。


unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, DB, ADODB, Grids, DBGrids;

type
TForm1 = class(TForm)
DBGrid1: TDBGrid;
ADOTable1: TADOTable;
DataSource1: TDataSource;
procedure FormCreate(Sender: TObject);
private
Procedure OnMouseWheel(Var Msg :TMsg;var Handled:Boolean);
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}
//------------------------------------------------------------------------------
Procedure TForm1.OnMouseWheel(Var Msg :TMsg;var Handled:Boolean);
begin
if Msg.message = WM_MouseWheel then
begin
if Msg.wParam > 0 then
begin
if DBGrid1.Focused then
SendMessage(DBGrid1.Handle,WM_VSCROLL,SB_PAGEUP,0);
end
else
begin
if DBGrid1.Focused then
SendMessage(DBGrid1.Handle,WM_VSCROLL,SB_PAGEDOWN,0);
end;
Handled:= True;
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Application.OnMessage:=OnMouseWheel; // 截获鼠标滚动事件
end;

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧