如何解決memo 的scrollbar 不可上下捲動 |
答題得分者是:herbert2
|
gptesu
一般會員 發表:14 回覆:14 積分:5 註冊:2008-09-09 發送簡訊給我 |
|
herbert2
尊榮會員 發表:58 回覆:640 積分:894 註冊:2004-04-16 發送簡訊給我 |
|
st33chen
尊榮會員 發表:15 回覆:591 積分:1201 註冊:2005-09-30 發送簡訊給我 |
您好,
herbert2 大大說得沒錯. 正常情形下, 一 not enabled 就不可操作, 不過, 硬要做也是可以達到這目的, 只是不知道為何 disabled 了還要捲動, 可能有特殊需求吧. 我的想法是, memo1 被 disabled 了, 不可操作, 那就用 form1 的 mouse 事件來做 memo1 的捲動. procedure TForm1.FormMouseWheel(Sender: TObject; Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean); begin if not memo1.Enabled then begin handled := true; // raynorpao 的方法以免 call 兩次 // mouse 位置是否在 memo1 上 if (mousepos.x>=form1.ClientOrigin.x memo1.Left) and (mousepos.x<=form1.ClientOrigin.x memo1.left memo1.Width) and (mousepos.y>=form1.ClientOrigin.y memo1.Top) and (mousepos.y<=form1.ClientOrigin.y memo1.Top memo1.Height) then begin // 依 mouse 捲動方向做 memo1 的捲動, 一次一列 if wheeldelta<0 then Memo1.Perform(EM_LINESCROLL, 0, 1) else begin Memo1.Perform(EM_LINESCROLL, 0, -1); end; end; end; end; 我用 d6 測可行, 但是 判斷 mouse 位置是否在 memo1 上 可能要再仔細看一下是否足夠精確, 不過, 只要 mouse 不在 memo1的邊線附近是沒問題的. 參考一下 ========================= 記得 herbert2 大大所說的, memo1.scrollbars 要設為 ssvertical 或 ssboth ======================================================== 對不起, 我剛再測了一下, 這個方法居然 memo1.scrollbars 設為 ssnone 也可以捲動耶. ======================================================== 再測發覺 formmousewheel 會 call 兩次, 引用 raynorpao 大大的解法 就 ok 了, 感恩 la.
------
IS IT WHAT IT IS 我是 李慕白 請倒著唸. 又想把老話拿出來說, 請用台語發音 : 專家專家全是ROBOT CAR (滷肉腳啦); 都已接手這麼久了, 績效還是那麼爛, 講話還那麼大聲. |
gptesu
一般會員 發表:14 回覆:14 積分:5 註冊:2008-09-09 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |