全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:3550
推到 Plurk!
推到 Facebook!

DBGrid VS 滾輪的滑鼠

 
yenhorng
中階會員


發表:12
回覆:82
積分:94
註冊:2002-06-18

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-06-18 22:31:31 IP:210.65.xxx.xxx 未訂閱
請問DBGrid可以支援有滾輪的滑鼠嗎?我試過好像只能在DBGrid目前的頁面內移動,而且用滾輪移動後再點選資料時,不會立即移動焦點至所點選的紀錄上!‧‧‧煩請各位先進解答,感激不盡‧‧
ccchen
版主


發表:61
回覆:940
積分:1394
註冊:2002-04-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-06-19 08:17:49 IP:163.29.xxx.xxx 未訂閱
引言: 請問DBGrid可以支援有滾輪的滑鼠嗎?我試過好像只能在DBGrid目前的頁面內移動,而且用滾輪移動後再點選資料時,不會立即移動焦點至所點選的紀錄上!‧‧‧煩請各位先進解答,感激不盡‧‧
TwinControl有一onMouseWheel Event(protected). Tform published此event,故From可接受滾輪移動. TDBGrid 則未published此Event.無法直接使用,但由於為proteced,只要繼承即可使用
試試這個例子, Form上放Table, DataSource, DBGrid各一,
Pas 如下
unit dumy1;    interface    uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, DB, DBTables, Grids, DBGrids;    type
  TDBGrid=class(DBGrids.TDBGrid)
public
  function DoMouseWheel(Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint): Boolean; override;
end;    TForm1 = class(TForm)
  DBGrid1: TDBGrid;
  Table1: TTable;
  DataSource1: TDataSource;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;    var
Form1: TForm1;    implementation
{$R *.dfm}
{ TDBGrid }
function TDBGrid.DoMouseWheel(Shift: TShiftState; WheelDelta: Integer;MousePos: TPoint): Boolean;
begin
  if WheelDelta > 0 then
    datasource.DataSet.Next;
  if wheelDelta < 0 then
    DataSource.DataSet.Prior;
end;    procedure TForm1.FormCreate(Sender: TObject);
begin
table1.open;
end;    end.
yenhorng
中階會員


發表:12
回覆:82
積分:94
註冊:2002-06-18

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-06-19 21:24:46 IP:210.65.xxx.xxx 未訂閱
終於可以用了,非常感謝!
vincent_siu
一般會員


發表:4
回覆:9
積分:2
註冊:2005-01-20

發送簡訊給我
#4 引用回覆 回覆 發表時間:2006-09-14 09:09:24 IP:203.85.xxx.xxx 未訂閱

你好,

可以用 window message 的方法

procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
var Handled: Boolean);
var
i : smallint;
begin
if Msg.message = WM_MOUSEWHEEL then
begin
Msg.message := WM_KEYDOWN;
Msg.lParam := 0;
i := HiWord(Msg.wParam) ;
if i > 0 then
Msg.wParam := VK_UP
else
Msg.wParam := VK_DOWN;
Handled := False;
end;
end;

謝閱

系統時間:2024-04-29 14:34:16
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!