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

有關RichEdit上的捲軸問題

尚未結案
jason8668
一般會員


發表:17
回覆:31
積分:9
註冊:2003-11-01

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-12-22 01:55:56 IP:211.76.xxx.xxx 未訂閱
請問一下,我現在同時有兩個 RichEdit 的物件,如果我要拖曳其中一個RichEdit上的捲軸的話,另一個RichEdit的捲軸也會跟著一起動,因為RichEdit的物件沒有拖曳捲軸的事件,不知這要怎麼做到這個功能呢?謝謝~ 發表人 - jason8668 於 2004/12/22 01:57:28
rogan321
高階會員


發表:21
回覆:307
積分:200
註冊:2003-05-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-12-22 02:55:29 IP:203.204.xxx.xxx 未訂閱
Hi~~jason8668 我寫個範例~
 
//在你的h檔中加入如下~
private:        // User declarations
   TWndMethod RichEdit1ScrollBar;
   void __fastcall RichEdit1ScrollBarWinProcs(TMessage &Mes);
//cpp檔中~~
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
   RichEdit1ScrollBar=RichEdit1->WindowProc;
   RichEdit1->WindowProc=RichEdit1ScrollBarWinProcs;
}
//--------------------------------------------------------------------
void __fastcall TForm1::RichEdit1ScrollBarWinProcs(TMessage &Mes)
{  int Rich1=0;
   int Rich2=0;
   RichEdit1ScrollBar(Mes);
   if(Mes.Msg==WM_VSCROLL)
   {
      Rich1=GetScrollPos(RichEdit1->Handle, SB_VERT);
      Rich2=GetScrollPos(RichEdit2->Handle, SB_VERT);
      if(Rich1!=Rich2)
      {
         RichEdit2->Perform(Mes.Msg,Mes.WParam,Mes.LParam);
      }
   }
}    
發表人 - rogan321 於 2004/12/22 02:59:48
jason8668
一般會員


發表:17
回覆:31
積分:9
註冊:2003-11-01

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-12-22 09:11:07 IP:211.76.xxx.xxx 未訂閱
rogan321兄,我試了你的方法,程式跟你一樣,但是拖曳其中一個RichEdit的捲軸後,另一個RichEdit的捲軸不會一起動,不知道是不是我有什麼地方沒注意到,可否指點一下呢?謝謝~
rogan321
高階會員


發表:21
回覆:307
積分:200
註冊:2003-05-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-12-22 15:46:47 IP:203.204.xxx.xxx 未訂閱
引言: rogan321兄,我試了你的方法,程式跟你一樣,但是拖曳其中一個RichEdit的捲軸後,另一個RichEdit的捲軸不會一起動,不知道是不是我有什麼地方沒注意到,可否指點一下呢?謝謝~
把你的Code貼上來看看~~
I_Love_You
一般會員


發表:18
回覆:87
積分:21
註冊:2002-07-24

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-12-23 12:08:01 IP:211.148.xxx.xxx 未訂閱
我测试了rogan321 大大的原始码,是可以的,但有个问题我想更深入讨论 一下,就是您目前的方法,只是可以在 RichEdit1滚动到某一个位置后, 鼠标台起的以后,RichEdit2的位置才跟着到达和RichEdit1的位置上去。 我想问的就是:能不能RichEdit2也像移动RichEdit1那样,不光是滚动条 动,而且里面的内容也是跟着动的?望进一步指点一下,谢谢!!!
jason8668
一般會員


發表:17
回覆:31
積分:9
註冊:2003-11-01

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-12-23 12:27:46 IP:211.23.xxx.xxx 未訂閱
rogan321兄,不好意思,你的方法可以了,是我自己的問題。 對了可否再請教一下,這種方法是移動完捲軸再放開後,另一個RichEdit的捲軸才會移動,可不可以在移動捲軸的同時,另一個RichEdit的捲軸也會跟著移動呢?不知有什麼方法呢?謝謝喔
rogan321
高階會員


發表:21
回覆:307
積分:200
註冊:2003-05-15

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-12-24 02:11:50 IP:203.204.xxx.xxx 未訂閱
引言: rogan321兄,不好意思,你的方法可以了,是我自己的問題。 對了可否再請教一下,這種方法是移動完捲軸再放開後,另一個RichEdit的捲軸才會移動,可不可以在移動捲軸的同時,另一個RichEdit的捲軸也會跟著移動呢?不知有什麼方法呢?謝謝喔
Hi~我剛想了一下~大概可以以這種方式實現~不過剛開始拉的時候會RichEdit2並 不會馬上跟著拉~要放一下才會配合~你自己想想可以怎麼改進~這並不是一個很 好的方法~我想如果要做的很完美~建議你拉一個ScrollBar來代替~將事件寫入 ScrollBar中效果會比較好~或者有人有較好的方法~~~ 將Code改成如下~
          int tmp1=0;
     int iVPos1=0;
     int iVPos2=0;
void __fastcall TForm1::RichEdit1ScrollBarWinProcs(TMessage &Mes)
{
   RichEdit1ScrollBar(Mes);
   if(Mes.Msg==WM_VSCROLL)
   {  tmp1=iVPos1;
      iVPos1=GetScrollPos(RichEdit1->Handle, SB_VERT);
      iVPos2=GetScrollPos(RichEdit2->Handle, SB_VERT);
      if(iVPos1!=iVPos2)
      {
         RichEdit2->Perform(Mes.Msg,Mes.WParam,Mes.LParam);
         if(tmp1Handle,WM_VSCROLL,MAKELONG(SB_LINEDOWN,0),0);
         else
         SendMessage(RichEdit2->Handle,WM_VSCROLL,MAKELONG(SB_LINEUP,0),0);          }
   }    }
系統時間:2024-04-28 1:26:16
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!