有關TMemo中加入一個TPaintBox在Repaint時會閃爍.. |
答題得分者是:lcsboy
|
okiss
一般會員 發表:11 回覆:55 積分:13 註冊:2002-11-27 發送簡訊給我 |
|
jessechan
版主 發表:109 回覆:394 積分:254 註冊:2002-04-05 發送簡訊給我 |
引言: 我在TMemo上new TPaintBox...Align=alClient.. 在TPaintBox的Paint中作我想在Memo上顯示的顏色.. 但是在run時..只要滑鼠或鍵盤作sel或keyin..就會導致我畫的東西不見..因為Memo它repaint.. 所以我攔截Memo的WM_PAINT事件..在裡面加上PaintBox->Repaint();.. 嗚嗚....結果卻產生了一個超級閃爍的Memo...@@... 這該怎ㄇ解決...??@@..可以請教為什麼要這樣做嗎, 這很奇怪說 Jesse Chan
------
Jesse Chan |
小貓
一般會員 發表:14 回覆:23 積分:12 註冊:2002-07-04 發送簡訊給我 |
|
lcsboy
版主 發表:87 回覆:622 積分:394 註冊:2002-06-18 發送簡訊給我 |
不知道這位仁兄是不是只想在TMemo上貼上一張自己要的圖, 可能是有顏色的文字..etc. 不管如何! 不知這位仁兄如何去處理這個WM_PAINT Message? 我的小經驗是...如果你是繼承物件然後去override OnPaint procedure!
好像你塞了什麼code之後, 最後還會去執行爸爸的OnPaint
如果你是攔劫Message的方式, 請先執行爸爸的WM_PAINT再來作自己要處理的事...如PaintBox->Repaint() 不然! 因為爸爸的WM_PAINT還沒執行完, 你又去run, PaintBox->Repaint()
因為你可能把PaintBox貼在TMemo上, PaintBox重繪後, 又觸發TMemo的WM_PAINT , 由此, 不斷的觸發TMemo的WM_PAINT, 而你又不讓爸爸的WM_PAINT先處理, TMemo就在那裡因為真正要處理的沒處理到, 就一直想要去處理原來的WM_PAINT要作的事, 一直不斷的作, 結果還是處理不到.....無窮循環 我的建議是:
1. 用攔劫Message的方式, 攔TMemo的WM_PAINT
2. 先執行爸爸的WM_PAINT
3. PainBox->Repaint()改成用PaintBox->Invalidate()
|
okiss
一般會員 發表:11 回覆:55 積分:13 註冊:2002-11-27 發送簡訊給我 |
引言: 我在TMemo上new TPaintBox...Align=alClient.. 在TPaintBox的Paint中作我想在Memo上顯示的顏色.. 但是在run時..只要滑鼠或鍵盤作sel或keyin..就會導致我畫的東西不見..因為Memo它repaint.. 所以我攔截Memo的WM_PAINT事件..在裡面加上PaintBox->Repaint();.. 嗚嗚....結果卻產生了一個超級閃爍的Memo...@@... 這該怎ㄇ解決...??@@..恩..就是..我要在Memo上作一個Canvas...可以讓整行的底色變色-->>主要功能 或是文字變色-->>次要功能..^^ 我要用寫的..不要用別人的元件..該怎麼做?? |
okiss
一般會員 發表:11 回覆:55 積分:13 註冊:2002-11-27 發送簡訊給我 |
|
jessechan
版主 發表:109 回覆:394 積分:254 註冊:2002-04-05 發送簡訊給我 |
|
okiss
一般會員 發表:11 回覆:55 積分:13 註冊:2002-11-27 發送簡訊給我 |
引言: 我查了一下, TMemo 是從 TWidgetControl 生出來的, 所以應該是有 Canvas, 我認為您不該去 new 一個 paintbox, 而是要用原有 Canvas 的 FillRect 去做才對, 但是被蓋掉的字可能要再以 Text... 的方法重畫, 我光是用想的就覺得很複雜, 所以沒有去實作, 不知道這樣對您有沒有幫助謝謝你..^^.. 你打的那個TWidgetControl好像在C Builder中我查不到耶..@@.. 有沒有比較方便的方法呀?? |
lcsboy
版主 發表:87 回覆:622 積分:394 註冊:2002-06-18 發送簡訊給我 |
oksis:
1. 我只能說, 我敬愛你........因為這部份後來我不敢再去作了....因為小弟
覺得太難了, 所以投降了 2. 既然你有一個有Canvas的元件在畫面上(如TBitmap, TPaintBox..etc)
我之前的想法是.....乾脆不要用TMemo, 因為你要自己控制的話, 幹嘛還要
他!? 只要自己在TPaintBox畫出游標, 和文字的前景和背景顏色. 然後自己
控制KeyDown, ScrollUP/Down, 相信, 就是一個可以變色的同類TMemo 3. 加油! 我精神上支持你
|
okiss
一般會員 發表:11 回覆:55 積分:13 註冊:2002-11-27 發送簡訊給我 |
現在只差抓Memo的ScrollBar的訊息了..
要怎樣抓到在TMemo裡的ScrollBar變動的訊息..
因為我用CaretPos的話...在按Shift Home或Shift Up(或Left)時..
它的CaretPos是存最右下的點..而不是SelStart..
但如果以SelStart為Focus的話..
卻又在Shift End或Shift Down(或Right)時.會出錯..@@
我用GETSCROLL試過..好像抓鼻到...還是我的寫法有錯ㄇ???
舅舅我ㄅ...@@^^
感恩喔...^^
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
|
okiss
一般會員 發表:11 回覆:55 積分:13 註冊:2002-11-27 發送簡訊給我 |
引言:引言: 現在只差抓Memo的ScrollBar的訊息了.. 要怎樣抓到在TMemo裡的ScrollBar變動的訊息..okiss 你好: 試試攔截 WM_VSCROLL, WM_HSCROLL 這兩個 Message -- >>< face="Verdana, Arial, Helvetica"> 我有TRY過說..但是它不理我..@@.. 它只會抓當你打PageDn或PageUp等等的... 在一般的情形...像是用Enter去NewLine時的捲動.. 按Up,Down,Left,Right等等的捲動.. 它鼻會送這些的訊息說... 也就是說..不完全的攔截..@@ |
lcsboy
版主 發表:87 回覆:622 積分:394 註冊:2002-06-18 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |