關於ScrollBar上的position |
答題得分者是:RaynorPao
|
frederick
中階會員 發表:101 回覆:108 積分:66 註冊:2002-08-01 發送簡訊給我 |
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: 請問一下: 關於ScrollBar上的position, 假設min =0,max=8192、SmallChange=16 LargeChange=256, 但卻沒那屬性設定當我們用滑鼠去移動那捲軸時, 數值會增加多少? 因為我想當我用滑鼠移動捲軸時,它所增加的值 會跟SmallChange一樣,但結果此數值卻大了許多, 也就是SmallChange=16,下次=32,但此值卻在這範圍內。 有任何方法可改善嗎? 謝謝~ frederick 你好: (1)請問你說的 ScrollBar 是指某個 VCL 元件上的 ScrollBar 還是 TScrollBar 這個元件呢?? (2)如果是指 TScrollBar 的話,不是就有你所說的屬性可以設定嗎?? (3)也可以用以下方式來驗證 ScrollBar 的 Position void __fastcall TForm1::ScrollBar1Scroll(TObject *Sender, TScrollCode ScrollCode, int &ScrollPos) { Label1->Caption=IntToStr(ScrollPos); }-- Enjoy Researching & Developing -- 發表人 - RaynorPao 於 2003/02/25 15:26:10
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
frederick
中階會員 發表:101 回覆:108 積分:66 註冊:2002-08-01 發送簡訊給我 |
引言:您好: 我使用的是單獨TScrollBar,我之前也有使用此方法(ScrollBar1Scroll), 但這跟OnChange的結果是一樣的。 其值仍不是SmallChange,也就是16、32、48、64做變更。 我是用一個TRichEdit、TScrollBar,RichEdit固定大小,我有一陣列, 用TScrollBar來show出其範圍。 也就是說,我陣列大小是8192,但我RichEdit一次只要顯示256個, 所以我用TScrollBar來移動它的範圍。 您或許會問說為何不直接載入,用RichEdit本身的ScrollBar? 但我之前試過,用TMemo載入64K的檔案, 要一分多鐘,8K也會停一會,(有經過一些字串相加、轉換IntToHex...之類的運算)所以才不會想直接載入。RichEdit不會比較快吧~ 因此才會有此問題。 發表人 - frederick 於 2003/02/25 17:52:29 發表人 - frederick 於 2003/02/25 17:53:28frederick 你好: (1)請問你說的 ScrollBar 是指某個 VCL 元件上的 ScrollBar 還是 TScrollBar 這個元件呢?? (2)如果是指 TScrollBar 的話,不是就有你所說的屬性可以設定嗎?? (3)也可以用以下方式來驗證 ScrollBar 的 Position void __fastcall TForm1::ScrollBar1Scroll(TObject *Sender, TScrollCode ScrollCode, int &ScrollPos) { Label1->Caption=IntToStr(ScrollPos); }-- Enjoy Researching & Developing -- 發表人 - RaynorPao 於 2003/02/25 15:26:10 |
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: 我使用的是單獨TScrollBar,我之前也有使用此方法(ScrollBar1Scroll), 但這跟OnChange的結果是一樣的。 其值仍不是SmallChange,也就是16、32、48、64做變更。 我是用一個TRichEdit、TScrollBar,RichEdit固定大小,我有一陣列, 用TScrollBar來show出其範圍。 也就是說,我陣列大小是8192,但我RichEdit一次只要顯示256個, 所以我用TScrollBar來移動它的範圍。 您或許會問說為何不直接載入,用RichEdit本身的ScrollBar? 但我之前試過,用TMemo載入64K的檔案, 要一分多鐘,8K也會停一會,(有經過一些字串相加、轉換IntToHex...之類的運算)所以才不會想直接載入。RichEdit不會比較快吧~ 因此才會有此問題。frederick 你好: 如果我沒有記錯的話
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
frederick
中階會員 發表:101 回覆:108 積分:66 註冊:2002-08-01 發送簡訊給我 |
引言: frederick 你好: 如果我沒有記錯的話 >>< face="Verdana, Arial, Helvetica"> 您好: LargeChange看了說明好像是當我們改變了邊邊(軌道), 而不是中間那顆移動扭(thumb)本身。 如果我改變了邊邊或者上下的箭頭,ScrollBar會照者 SmallChange(箭頭)與LargeChange(軌道)作改變。 但當您用滑鼠拖曳了移動扭(thumb),無論是移動中的 ScrollPos或最終的Position,它所改變的值卻不是 SmallChange or LargeChange值的累加。 實在找不出有什麼屬性可以設定的。 |
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: LargeChange看了說明好像是當我們改變了邊邊(軌道), 而不是中間那顆移動扭(thumb)本身。 如果我改變了邊邊或者上下的箭頭,ScrollBar會照者 SmallChange(箭頭)與LargeChange(軌道)作改變。 但當您用滑鼠拖曳了移動扭(thumb),無論是移動中的 ScrollPos或最終的Position,它所改變的值卻不是 SmallChange or LargeChange值的累加。 實在找不出有什麼屬性可以設定的。frederick 你好: 那如果是這樣呢??(不知道能不能符合你的需求??) < class="code"> void __fastcall TForm1::ScrollBar1Scroll(TObject *Sender, TScrollCode ScrollCode, int &ScrollPos) { if(ScrollPos%ScrollBar1->SmallChange!=0) ScrollPos=(ScrollPos/ScrollBar1->SmallChange 1)*ScrollBar1->SmallChange; Label1->Caption=IntToStr(ScrollPos); } -- Enjoy Researching & Developing --
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
frederick
中階會員 發表:101 回覆:108 積分:66 註冊:2002-08-01 發送簡訊給我 |
引言: frederick 你好: 那如果是這樣呢??(不知道能不能符合你的需求??) < class="code"> void __fastcall TForm1::ScrollBar1Scroll(TObject *Sender, TScrollCode ScrollCode, int &ScrollPos) { if(ScrollPos%ScrollBar1->SmallChange!=0) ScrollPos=(ScrollPos/ScrollBar1->SmallChange 1)*ScrollBar1->SmallChange; Label1->Caption=IntToStr(ScrollPos); } -- Enjoy Researching & Developing --您好: 經試了結果,您的code已經把變動範圍縮小了許多。 我之前也是有試過取餘數的方式,但是用position。 我想這是它(thumb)的問題。 因當移動時,他的變化就不是線性(倍數成長), 有時會跳個兩倍(指SmallChange的值)。 但這取餘數的值大一點(連同相關變數也改) ,如256,(變成移動thumb幾格後才會有變化),他又粉線性。 另一方面,我想這跟ScrollBar的外型長度、MAX vaule有關。 相同ScrollBar、外型長度一樣: 1. MAX=1024 2. MAX=200 SmallChange都設1,如果用thumb去移動,結果MAX=200的ScrollBar 會依照SmallChange作遞增。但如果MAX=1024的ScrollBar, 卻不會會依照SmallChange作遞增(所遞增的值不是SmallChange的倍數)。 我想一般沒人去care這麼小的變化吧。 不過還是謝謝您!!! ^_^ |
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: 經試了結果,您的code已經把變動範圍縮小了許多。 我之前也是有試過取餘數的方式,但是用position。 我想這是它(thumb)的問題。 因當移動時,他的變化就不是線性(倍數成長), 有時會跳個兩倍(指SmallChange的值)。 但這取餘數的值大一點(連同相關變數也改) ,如256,(變成移動thumb幾格後才會有變化),他又粉線性。 另一方面,我想這跟ScrollBar的外型長度、MAX vaule有關。 相同ScrollBar、外型長度一樣: 1. MAX=1024 2. MAX=200 SmallChange都設1,如果用thumb去移動,結果MAX=200的ScrollBar 會依照SmallChange作遞增。但如果MAX=1024的ScrollBar, 卻不會會依照SmallChange作遞增(所遞增的值不是SmallChange的倍數)。 我想一般沒人去care這麼小的變化吧。 不過還是謝謝您!!! ^_^ frederick 你好: (1)如果把 LargeChange 設為 SmallChange 的整數倍數 (2)Min=0, Max 也設為 SmallChange 的整數倍數 (3)Position 一開始的初始值設為 0 (4)配合以上程式碼的控制,應該可以在執行期控制 Position 的數值是 SmallChange 的整數倍數吧 > --
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
frederick
中階會員 發表:101 回覆:108 積分:66 註冊:2002-08-01 發送簡訊給我 |
引言:frederick 你好: (1)如果把 LargeChange 設為 SmallChange 的整數倍數 (2)Min=0, Max 也設為 SmallChange 的整數倍數 (3)Position 一開始的初始值設為 0 (4)配合以上程式碼的控制,應該可以在執行期控制 Position 的數值是 SmallChange 的整數倍數吧 > -- >>< face="Verdana, Arial, Helvetica"> 哈~我想可能是我的語意不清,讓您誤解了。 經取餘數後,再乘上某一數值,結果當然會是整數倍。 我的意思是:假設SmallChange=16 當我們用上下鍵: 它變化是0、16、32、64、80、96、112..... 用滑鼠移動thumb: 它的變化或許是0、16、64、96、112... 同樣是16倍數阿 ^_____________^ 而我是希望當用滑鼠移動thumb時所變化的值跟用上下鍵一樣。 結果如上篇文章說,如果把ScrollBar長度再拉長一點,就沒問題了。 但總不能太長,所以仍會有此問題。 所以我想這跟元件長度、滑鼠也有關係吧~ |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |