请高手给个指南,关于改写控件的问题!(50分)

  • 主题发起人 主题发起人 hefeidj
  • 开始时间 开始时间
H

hefeidj

Unregistered / Unconfirmed
GUEST, unregistred user!
用DELPHI做数据库编程也不是一天两天了,才发现原来还不会修改delphi原有的控件。

最近用c++builder改一个软件公司的源代码,发现c++builder里的DBGrid控件可以使用鼠标中键滚动,而Delphi里的DBGrid一直都不支持,需要修改控件,可是我还无从下手,希望有高手指点一下,让我入下门,谢谢!
 
我照着论坛上的有关帖子修改了dbgrids.pas,但是新建个dbgrid,还是没有scroll事件啊?为什么?
 
我有一个delphi控件开发指南,不过是英文的,你看需要不,需要的话留下email,我给你发一个!
 
这里有个现成的:
http://www.delphibox.com/go.asp?id=1308&url=http://downloads.2ccc.com/vcl/grids/DBGrid3D.rar
 
邮箱给我,给你发一个我作的。并且可去水平滚动条!(当然想去垂直滚动条也就是加一行码)。
 
walimg@sohu.com
来点注释吧。谢谢。
 
xyzw-0016@163.com能给我一份马,谢谢了!
 
conlin_zsh@163.com
随便给我一份,谢谢了
 
代码如下:
unit AddMsgDBGrid;

interface

uses
windows, SysUtils, Messages, Classes, Controls, Grids, DBGrids;

type
TAddMsgDBGrid = class(TDBGrid)
protected //添加新的'鼠标滚轮消息'
procedure WMMOUSEWHEEL(var Message: TMessage); message WM_MOUSEWHEEL;
procedure Paint; override; //覆盖Paint是为了去除'水平滚动条'
end;

procedure Register;
implementation

procedure Register;
begin
RegisterComponents('GenCheng', [TAddMsgDBGrid]);
end;

{ TAddMsgDBGrid }

procedure TAddMsgDBGrid.WMMOUSEWHEEL(var Message: TMessage);
var
ScrollDown: Boolean;
begin
ScrollDown := Short(Message.WParamHi) < 0; //Short函数在windows单元
if assigned(self.DataSource) and assigned(self.DataSource.DataSet) and self.DataSource.DataSet.active then
if ScrollDown then
self.DataSource.DataSet.MoveBy(1) //或者Self.DataSource.DataSet.Next;
else
self.DataSource.DataSet.MoveBy(-1); //或者Self.DataSource.DataSet.Prior;
end;

procedure TAddMsgDBGrid.Paint;
begin
SetScrollRange(self.Handle, SB_HORZ, 0, 0, False); //去除水平滚动条
inherited Paint;
end;

end.
 
to cqwty:

能发份delphi控件开发指南给我吗
email: macwong@tom.com

谢谢
 
哈哈,DBGrid3D将 function DoMouseWheel 放到了published段,能把这个function在Object Inspector中显示出来吗???
 
太过分了,问题解决了也不结帖,也不给分????
 
对不住了楼主,我也是逼得没办法了,借用一层楼:
从事DELPHI开发3年以上工作经验,男性,26-32;
薪资待遇:底薪加提成,5000/月,公司有住宿,提供工作午餐;
紧急;
qq:51333734,有意应聘本公司软件工程师者请在验证栏位写明"应聘";
我公司是正规公司,可以签定劳保合同的!
www.bestup.com.cn
小助理在此谢过啦!以后愿意成为您的左右手!
 
后退
顶部