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

如何解決memo 的scrollbar 不可上下捲動

答題得分者是:herbert2
gptesu
一般會員


發表:14
回覆:14
積分:5
註冊:2008-09-09

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-01-06 20:44:25 IP:202.175.xxx.xxx 訂閱
各位先進

如何使memo 在readonly=true或enabled=false的時候,令memo 的scrollbar 可以被上下捲動?

謝謝
herbert2
尊榮會員


發表:58
回覆:640
積分:894
註冊:2004-04-16

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-01-06 22:43:13 IP:211.72.xxx.xxx 訂閱
當 ReadOnly := True 時, 只要 ScrollBars 勿設成 ssNone 就可看得到 ScrollBar 且可操作.
當然, 若 Lines 資料內容太短, Horizontal 變灰; 筆數太少, Vertical 變灰.
當 Enabled := False 時, 即使 ScrollBars 非設成 ssNone, 看得到 ScrollBar, 但不可操作.
其時, 各元件只要 Enabled := False 皆不可操作.
st33chen
尊榮會員


發表:15
回覆:591
積分:1201
註冊:2005-09-30

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-01-07 09:57:06 IP:122.116.xxx.xxx 未訂閱
您好,

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 (滷肉腳啦);
都已接手這麼久了, 績效還是那麼爛, 講話還那麼大聲.
編輯記錄
st33chen 重新編輯於 2009-01-07 10:02:39, 註解 無‧
st33chen 重新編輯於 2009-01-07 10:06:43, 註解 無‧
st33chen 重新編輯於 2009-01-07 10:48:55, 註解 無‧
gptesu
一般會員


發表:14
回覆:14
積分:5
註冊:2008-09-09

發送簡訊給我
#4 引用回覆 回覆 發表時間:2009-01-07 20:55:19 IP:202.175.xxx.xxx 訂閱
成功啦! 謝謝各位幫忙!
系統時間:2024-05-04 18:37:18
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!