TMEMO 做輸出, 如何讓它捲動顯示剛add 的字串呢 |
答題得分者是:pedro
|
Arnor
一般會員 發表:28 回覆:29 積分:16 註冊:2006-10-28 發送簡訊給我 |
|
rick060
高階會員 發表:2 回覆:112 積分:217 註冊:2009-11-17 發送簡訊給我 |
|
pedro
尊榮會員 發表:152 回覆:1187 積分:892 註冊:2002-06-12 發送簡訊給我 |
Hi
看似容易,一下子跳入回文,仔細想來,也並不是那麼容易! 問問使用BeginUpdate和EndUpdate用意是? 如果把這2個敍述拿掉,其實Memo的ScrollBar就會自已捲動. procedure TForm1.Button1Click(Sender: TObject); var i:longint; begin for i:=0 to 100000 do begin // Memo1.Lines.BeginUpdate; Memo1.Lines.Add(IntToStr(i)); Application.ProcessMessages; // Memo1.SelStart:=Length(Memo1.Text)-10; // Memo1.Lines.EndUpdate; end; end; |
Arnor
一般會員 發表:28 回覆:29 積分:16 註冊:2006-10-28 發送簡訊給我 |
|
Arnor
一般會員 發表:28 回覆:29 積分:16 註冊:2006-10-28 發送簡訊給我 |
pedro 大說得沒錯,
因為是multi threading 的記錄都要輸出到 memo, 所以才用到 beginupdate, endupdate. (一般情況的卻srollbar 會跟著一直往下捲動) 所以是個 begin, end 造成memo的游標位置歸到原點囉.. 在 multi threading 集中outpu記錄到一個memo 的情況, pedro 大有什麼好建議可以做呢? criticalsection (不用beginupdate, endupdate)? 只用 beginupdate endupdate? 還是有別的方式呢? |
pedro
尊榮會員 發表:152 回覆:1187 積分:892 註冊:2002-06-12 發送簡訊給我 |
試看看這樣有沒有用?
procedure TForm1.Button1Click(Sender: TObject); var i:longint; begin for i:=0 to 100000 do begin Memo1.Lines.BeginUpdate; Memo1.Lines.Add(IntToStr(i)); Memo1.Lines.EndUpdate; Application.ProcessMessages; SendMessage(Memo1.Handle, EM_SCROLLCARET, 0, 0); end; end;
編輯記錄
pedro 重新編輯於 2011-06-15 01:59:38, 註解 無‧
|
Arnor
一般會員 發表:28 回覆:29 積分:16 註冊:2006-10-28 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |