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

DBGrid捲軸問題

答題得分者是:GrandRURU
fffffoooooolll
一般會員


發表:11
回覆:12
積分:4
註冊:2006-11-30

發送簡訊給我
#1 引用回覆 回覆 發表時間:2010-02-22 14:30:04 IP:59.115.xxx.xxx 訂閱
我想知道DBGrid捲軸可否同步更新
就是我滑鼠按住捲軸拉到哪裡就顯示到哪裡
不用等滑鼠放掉在顯示
我有搜尋過類似文章
只有看到Delphi的
請問有人會BCB的嗎
謝謝
GrandRURU
站務副站長


發表:234
回覆:1651
積分:1742
註冊:2005-06-21

發送簡訊給我
#2 引用回覆 回覆 發表時間:2010-02-22 16:13:21 IP:203.75.xxx.xxx 訂閱
Delphi中怎麼用,BCB就是怎麼用囉

另外,請問你所說的資料是在哪邊看到的呢?

===================引 用 fffffoooooolll 文 章===================
我想知道DBGrid捲軸可否同步更新
就是我滑鼠按住捲軸拉到哪裡就顯示到哪裡
不用等滑鼠放掉在顯示
我有搜尋過類似文章
只有看到Delphi的
請問有人會BCB的嗎
謝謝
fffffoooooolll
一般會員


發表:11
回覆:12
積分:4
註冊:2006-11-30

發送簡訊給我
#3 引用回覆 回覆 發表時間:2010-02-22 19:48:55 IP:59.115.xxx.xxx 訂閱
http://delphi.ktop.com.tw/board.php?cid=30&fid=66&tid=70761

我是看到這篇
可是我看不太懂
裡面寫法如下
TDBGrid = Class(DBGrids.TDBGrid)
Protected
procedure WMVScroll(var Message: TWMVScroll); message WM_VSCROLL;
end;
TForm1 = class(TForm)
....

...

procedure TDBGrid.WMVScroll(var Message: TWMVScroll);
begin
if Message.ScrollCode = SB_THUMBTRACK then Message.ScrollCode := SB_THUMBPOSITION;
inherited;
end;

GrandRURU
站務副站長


發表:234
回覆:1651
積分:1742
註冊:2005-06-21

發送簡訊給我
#4 引用回覆 回覆 發表時間:2010-02-22 22:24:27 IP:118.167.xxx.xxx 訂閱
那個是delphi的建構式
相當於c 的
class DBGrids : public TDBGrid(TDBGrid)
{
protected:
......
......
......
}

實際動手做做看吧。

再給你一個提示:
http://topic.csdn.net/t/20010823/15/252893.html

剛剛用BCB編譯出來的結果:
[code cpp]
class DELPHICLASS TDBGrid;
class PASCALIMPLEMENTATION TDBGrid : public Dbgrids::TDBGrid
{
typedef Dbgrids::TDBGrid inherited;

protected:
HIDESBASE MESSAGE void __fastcall WMVScroll(Messages::TWMScroll &Message);
public:
#pragma option push -w-inl
/* TCustomDBGrid.Create */ inline __fastcall virtual TDBGrid(Classes::TComponent* AOwner) : Dbgrids::TDBGrid(AOwner) { }
#pragma option pop
#pragma option push -w-inl
/* TCustomDBGrid.Destroy */ inline __fastcall virtual ~TDBGrid(void) { }
#pragma option pop

public:
#pragma option push -w-inl
/* TWinControl.CreateParented */ inline __fastcall TDBGrid(HWND ParentWindow) : Dbgrids::TDBGrid(ParentWindow) { }
#pragma option pop

};
[/code]

===================引 用 fffffoooooolll 文 章===================
http://delphi.ktop.com.tw/board.php?cid=30&fid=66&tid=70761

我是看到這篇
可是我看不太懂
裡面寫法如下
TDBGrid = Class(DBGrids.TDBGrid)
Protected
procedure WMVScroll(var Message: TWMVScroll); message WM_VSCROLL;
end;
TForm1 = class(TForm)
....

...

procedure TDBGrid.WMVScroll(var Message: TWMVScroll);
begin
if Message.ScrollCode = SB_THUMBTRACK then Message.ScrollCode := SB_THUMBPOSITION;
inherited;
end;

編輯記錄
GrandRURU 重新編輯於 2010-02-23 10:13:15, 註解 嗯…跟自己寫的果然差很多‧
miracle0625
一般會員


發表:1
回覆:2
積分:0
註冊:2010-02-23

發送簡訊給我
#5 引用回覆 回覆 發表時間:2010-02-23 10:24:24 IP:59.115.xxx.xxx 訂閱
我帳號換信箱成hotmail後就收不到信所以沒辦法登入
只好重新申請新的
我有試著自己打結果如下
可是還是有些部分不懂
我有看你打的也不是很懂
我要怎樣才能呼叫出來

class DBGrids : public TDBGrid
{
protected:
void __fastcall WMVScroll(TWMVScroll Message);
};

void __fastcall DBGrids::WMVScroll(TWMVScroll Message)
{
if (Message.ScrollCode == SB_THUMBTRACK)
{
Message.ScrollCode = SB_THUMBPOSITION;
}
}




GrandRURU
站務副站長


發表:234
回覆:1651
積分:1742
註冊:2005-06-21

發送簡訊給我
#6 引用回覆 回覆 發表時間:2010-02-23 13:22:17 IP:203.75.xxx.xxx 訂閱
剛剛試了一下

哈哈!
還真的不行耶!

要不要試著利用那段程式碼另外建一個VCL元件呢?

===================引 用 miracle0625 文 章===================
我帳號換信箱成hotmail後就收不到信所以沒辦法登入
只好重新申請新的
我有試著自己打結果如下
可是還是有些部分不懂
我有看你打的也不是很懂
我要怎樣才能呼叫出來
編輯記錄
GrandRURU 重新編輯於 2010-02-23 13:23:05, 註解 無‧
miracle0625
一般會員


發表:1
回覆:2
積分:0
註冊:2010-02-23

發送簡訊給我
#7 引用回覆 回覆 發表時間:2010-02-25 14:03:07 IP:59.117.xxx.xxx 訂閱
請問一下你是說用做成一個按鈕呼叫嗎
還是......
按了沒反應
GrandRURU
站務副站長


發表:234
回覆:1651
積分:1742
註冊:2005-06-21

發送簡訊給我
#8 引用回覆 回覆 發表時間:2010-02-25 18:10:46 IP:203.75.xxx.xxx 訂閱
就是上面元件盤的東西

bcb中我只找到用滑鼠滾輪的做法
其它的我也不知道了

[code cpp]
//.h
public:
void __fastcall (__closure *OldProc)(Messages::TMessage &Message);
void __fastcall NewProc(TMessage &Message);

//.cpp
void __fastcall TForm1::NewProc(TMessage& Message)
{
if (Message.Msg == WM_MOUSEWHEEL)
{
int z = GET_WHEEL_DELTA_WPARAM(Message.WParam);
Message.Msg = WM_VSCROLL;
if (z > 0)
Message.WParam = SB_PAGEUP ;
else
Message.WParam = SB_PAGEDOWN;
}
OldProc(Message);
}

void __fastcall TForm1::FormCreate(TObject *Sender)
{
OldProc = DBGrid1->WindowProc;
DBGrid1->WindowProc = NewProc;
}
[/code]
fffffoooooolll
一般會員


發表:11
回覆:12
積分:4
註冊:2006-11-30

發送簡訊給我
#9 引用回覆 回覆 發表時間:2010-02-26 15:40:30 IP:59.117.xxx.xxx 訂閱
謝謝大大的幫忙

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