兩個 ScrollBar 同步問題 |
尚未結案
|
BGman
初階會員 發表:28 回覆:85 積分:42 註冊:2003-01-10 發送簡訊給我 |
小弟有一個需求,我的MainForm 有一個 ScrollBar1 是用來處理TMemo 的 ScrollBar 同步捲動,我已經在ScrollBar1_OnScroll 事件中成功的實做它,
可是目前只能單向同步,還未達到雙向同步。
也就是說在MainForm 移動ScrollBar 可以成功控制TMemo 的 ScrollBar 捲動,
可是當我觸發TMemo 的 ScrollBar 捲動,無法令MainForm 的 ScrollBar捲動
請問該如何辦到雙向同步的機制?
小弟有想過,ScrollWindow( ) 這個API ,可是在 Memo 找不到事件可以切入
也想過攔截訊息,可是不知道在 MSDN 以及 BCB5 各要打什麼關鍵字,
曾試著在BCB 搜尋 VCL_MESSAGE_HANDLER macro 但是只有5 筆 WM_XXX
煩請各位高手,指點迷津!小弟感激不盡!
|
okiss
一般會員 發表:11 回覆:55 積分:13 註冊:2002-11-27 發送簡訊給我 |
|
BGman
初階會員 發表:28 回覆:85 積分:42 註冊:2003-01-10 發送簡訊給我 |
Hi okiss 兄,大致上看了一下你的做法,覺得你對 Window 機制很了解,
因為程式跑到這一行 PaintMemoOldWinProc( message )時,不認識這個函式
另外我是用 use unit ,不知道該如何與Form 結合,
所以可以麻煩你把程式寄給我嗎?
我的 E-mail 是 scott@copystar.com.tw 另外想請教你
不管 Memo 或是其他含有 ScrollBar 的元件,
都是當它的資料超過Memo 的範圍才開始出現。
在我還沒有看過你的程式碼以前,
我原先以為可以利用像RTTI 之類的技術,得到Memo 的 ScrollBar 指標
再判斷 if ( Memo->pScrollBar )
Memo->pScrollBar->Pos = Form1->ScrollBar1->Pos
所以為了達到兩個 ScrollBar 同步,是不是都要先繼承 VCL 元件,
然後再改寫 TWndMethod 機制才辦的到呢?
|
okiss
一般會員 發表:11 回覆:55 積分:13 註冊:2002-11-27 發送簡訊給我 |
引言: Hi okiss 兄,大致上看了一下你的做法,覺得你對 Window 機制很了解, 因為程式跑到這一行 PaintMemoOldWinProc( message )時,不認識這個函式 喔喔...這是沒改到.. 應該是MyMemoOldWinProc 另外我是用 use unit ,不知道該如何與Form 結合, 所以可以麻煩你把程式寄給我嗎? 我的 E-mail 是 scott@copystar.com.tw 另外想請教你 不管 Memo 或是其他含有 ScrollBar 的元件, 都是當它的資料超過Memo 的範圍才開始出現。 在我還沒有看過你的程式碼以前, 我原先以為可以利用像RTTI 之類的技術,得到Memo 的 ScrollBar 指標 再判斷 if ( Memo->pScrollBar ) Memo->pScrollBar->Pos = Form1->ScrollBar1->Pos 所以為了達到兩個 ScrollBar 同步,是不是都要先繼承 VCL 元件, 然後再改寫 TWndMethod 機制才辦的到呢?不好意思...我對window也不了解..@@ 因為我怎樣也抓不到TMemo的*ScrollBar 所以,才用win32 API的作法的..^^ 而且我覺的我的程式中好像作了很多廢事..@@ 我已經寄了..^^ 多多指教...^^ |
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: 不管 Memo 或是其他含有 ScrollBar 的元件, 都是當它的資料超過Memo 的範圍才開始出現。 在我還沒有看過你的程式碼以前, 我原先以為可以利用像RTTI 之類的技術,得到Memo 的 ScrollBar 指標 再判斷 if ( Memo->pScrollBar ) Memo->pScrollBar->Pos = Form1->ScrollBar1->Pos 所以為了達到兩個 ScrollBar 同步,是不是都要先繼承 VCL 元件, 然後再改寫 TWndMethod 機制才辦的到呢?BGman 你好: 在 Win32 API 中,有很多現成的 function 可以使用的,可以得到你想要的資 訊和結果 http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/scrollbars/scrollbars.asp -- Enjoy Researching & Developing --
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
BGman
初階會員 發表:28 回覆:85 積分:42 註冊:2003-01-10 發送簡訊給我 |
元件有:
TPaintMemoBox : public TScrollBox
{
TPaintPanel *PaintPanel;
}
TPaintPanel : public Tpanel
{
TPaintBox *PaintBox;//左邊
TPaintMemo *PaintMemo;//右邊的memo
}
class TPaintMemo : public Tmemo
{
TPaintBox *PaintBox;
}
目的:
做出一個可設斷點的memo元件....
-------------------------------------------------------------
參考一下吧...^^
okiss 兄,拜讀了你的程式碼,我還是無法把你的程式碼和我個需求套在一起
方便幫我寫一個,一個含有Scrollbar 及 Memo 的 Form ,然後示範一下
如何達到雙向同步機制嗎?
|
okiss
一般會員 發表:11 回覆:55 積分:13 註冊:2002-11-27 發送簡訊給我 |
|
okiss
一般會員 發表:11 回覆:55 積分:13 註冊:2002-11-27 發送簡訊給我 |
把寄給你的程式作一些修正 //-------------------------------------------------------------------void __fastcall TForm1::ScrollBar1Scroll(TObject *Sender,
TScrollCode ScrollCode, int &ScrollPos)
{
int wParam = ScrollPos << 16;
wParam = wParam (int)LOWORD(ScrollCode);
SendMessage(Memo1->Handle, WM_VSCROLL, wParam,NULL);
} //-------------------------------------------------------------------void __fastcall TForm1::ScrollBar2Scroll(TObject *Sender,
TScrollCode ScrollCode, int &ScrollPos)
{
int wParam = ScrollPos << 16;
wParam = wParam (int)LOWORD(ScrollCode);
SendMessage(Memo1->Handle, WM_HSCROLL, wParam,NULL);
} 嗯..這樣應該大致完成了你要的東東了..^^
|
BGman
初階會員 發表:28 回覆:85 積分:42 註冊:2003-01-10 發送簡訊給我 |
|
okiss
一般會員 發表:11 回覆:55 積分:13 註冊:2002-11-27 發送簡訊給我 |
板上仍無完整的範例程式....
所以, po 一下, 大家參考一下吧....^^..
*****************************************************************
************************** Unit1.h ******************************
***************************************************************** //-----------------------------------------------------------------
#ifndef Unit1H
#define Unit1H
//-----------------------------------------------------------------
#include
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |