線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:869
推到 Plurk!
推到 Facebook!

请问Pillar Wang原来写的实现鼠标滚轮功能

答題得分者是:deity
baby2321
初階會員


發表:52
回覆:165
積分:48
註冊:2005-06-11

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-08-10 21:28:28 IP:219.140.xxx.xxx 未訂閱
通过 搜索 我找到 ---------------------------------------------------- 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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-08-13 00:30:10 IP:61.235.xxx.xxx 未訂閱
根据提示,你应该将该句子的"="改为":"。
mason88
一般會員


發表:8
回覆:17
積分:5
註冊:2005-08-01

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-08-13 00:32:51 IP:61.235.xxx.xxx 未訂閱
根据提示,应该将TDBGrid = class(DBGrids.TDBGrid)改为 TDBGrid : class(DBGrids.TDBGrid)吧。
baby2321
初階會員


發表:52
回覆:165
積分:48
註冊:2005-06-11

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-08-16 12:21:26 IP:219.140.xxx.xxx 未訂閱
不好意思 耽误了几天 谢谢mason88的回复 “应该将TDBGrid = class(DBGrids.TDBGrid)改为 TDBGrid : class(DBGrids.TDBGrid)”后 执行时 提示ERROR:Excepted an identifier but CLASS found.
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-08-16 15:20:34 IP:218.15.xxx.xxx 未訂閱
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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-08-16 20:18:17 IP:219.140.xxx.xxx 未訂閱
多谢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

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-08-17 09:42:36 IP:218.15.xxx.xxx 未訂閱
您好:类定义格式如下:  
 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; //类结束
type //这里可以不要,主要为了增强可读性
  TForm1 = class(TForm)
    Button1: TButton;
    DBGrid1: TDBGrid;
    DataSource1: TDataSource;
    Query1: TQuery;
  private
    { Private declarations }
  public
    { Public declarations }
  end; // 类结束
参考看看 <> ============================ 为什么经过多年以后,得失的过程如此冷漠 ============================ 發表人 -
baby2321
初階會員


發表:52
回覆:165
積分:48
註冊:2005-06-11

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-08-17 18:15:36 IP:219.140.xxx.xxx 未訂閱
多谢deity详细的讲解
系統時間:2024-06-28 17:29:12
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!