请问Pillar Wang原来写的实现鼠标滚轮功能 |
答題得分者是:deity
|
baby2321
初階會員 發表:52 回覆:165 積分:48 註冊:2005-06-11 發送簡訊給我 |
通过 搜索 我找到
----------------------------------------------------
http://delphi.ktop.com.tw/topic.php?topic_id=63603
实现鼠标滚轮功能
在宣告form之前宣告一個function
type
TDBGrid = class(DBGrids.TDBGrid)
public
function DoMouseWheel(Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint): Boolean; override;
end;
TSM104 = class(TForm) function TDBGrid.DoMouseWheel(Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint): Boolean;
begin
if WheelDelta > 0 then
datasource.DataSet.Prior;
if wheelDelta < 0 then
DataSource.DataSet.Next;
Result := True;
end; Pillar Wang
------------------------------------ 我已通过捕捉WM_MOUSEWHEEL消息实现鼠标滚轮功能 看到您的帖子 于是想试试通过DoMouseWheel实现 ---------------------------
type
TDBGrid = class(DBGrids.TDBGrid)
public
function DoMouseWheel(Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint): Boolean; override;
end;
TSM104 = class(TForm) implementation {$R *.dfm}
function TDBGrid.DoMouseWheel(Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint): Boolean;
begin
if WheelDelta > 0 then
datasource.DataSet.Prior;
if wheelDelta < 0 then
DataSource.DataSet.Next;
Result := True;
end;
----------------------
执行之 提示error: Except':' but '=' found
同时 TDBGrid = class(DBGrids.TDBGrid) 高亮显示
|
mason88
一般會員 發表:8 回覆:17 積分:5 註冊:2005-08-01 發送簡訊給我 |
|
mason88
一般會員 發表:8 回覆:17 積分:5 註冊:2005-08-01 發送簡訊給我 |
|
baby2321
初階會員 發表:52 回覆:165 積分:48 註冊:2005-06-11 發送簡訊給我 |
|
deity
尊榮會員 發表:90 回覆:876 積分:678 註冊:2003-05-09 發送簡訊給我 |
baby2321您好:小弟试了没问题啊,能实现用滚轮进行记录滚动
在Form上放Query, DataSource, DBGrid各一,完整代码如下:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, DB, DBTables, Grids, DBGrids, StdCtrls; type TDBGrid = class(DBGrids.TDBGrid) public function DoMouseWheel(Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint): Boolean; override; end; type TForm1 = class(TForm) Button1: TButton; DBGrid1: TDBGrid; DataSource1: TDataSource; Query1: TQuery; private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} function TDBGrid.DoMouseWheel(Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint): Boolean; begin if WheelDelta > 0 then datasource.DataSet.Prior; if wheelDelta < 0 then DataSource.DataSet.Next; Result := True; end; procedure TForm1.FormCreate(Sender: TObject); begin Query1.Close; Query1.SQL.Text:='SELECT * FROM "BDESDD.DB" '; Query1.Open; end; end.============================ 为什么经过多年以后,得失的过程如此冷漠 ============================ |
baby2321
初階會員 發表:52 回覆:165 積分:48 註冊:2005-06-11 發送簡訊給我 |
多谢deity和mason88的关注 我原来是在
type
TSecSetting = class(TForm)
下加上
TDBGrid = class(DBGrids.TDBGrid)
即
type TSecSetting = class(TForm) TDBGrid = class(DBGrids.TDBGrid) ......并未象阁下 type TDBGrid = class(DBGrids.TDBGrid) ...... type TForm1 = class(TForm) 分到两个type中 故提示先前出现的错误(还有 没有加“TSM104 = class(TForm)”这一句代码) 但这种情况下 为什么不能写在一个type下呢?是不是因为产生了冲突? |
deity
尊榮會員 發表:90 回覆:876 積分:678 註冊:2003-05-09 發送簡訊給我 |
您好:类定义格式如下:
type TThing=class(类名) .. end;//结束了某个类的定义 TAnimal=class(类名) .. end;//第二类定义结束 上面所定义的父类都不一样,一个类名为:TForm,一个类名为:DBGrids.TDBGrid。 您声明了一个类,没结束又接声明一个类,所以会报错,得加上end type TDBGrid = class(DBGrids.TDBGrid) public function DoMouseWheel(Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint): Boolean; override; end; //类结束参考看看 <> ============================ 为什么经过多年以后,得失的过程如此冷漠 ============================ > 發表人 - |
baby2321
初階會員 發表:52 回覆:165 積分:48 註冊:2005-06-11 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |