如何對RichEdit中某一行作彩色方式顯示? |
答題得分者是:hagar
|
nick_chen
一般會員 發表:9 回覆:5 積分:2 註冊:2003-04-14 發送簡訊給我 |
各位使用Delphi的前輩:
請問如何對RichEdit中某一行作彩色方式顯示?
我已可以讀取RichEdit中某一行,但是在作顏色處理時,
發現永遠都在處理第一行,以下是我的程式內容: StringText :=RichEdit1.Lines.Strings[20]; //讀取第二十行的文字
for j:=1 to length(StringText) do
begin
RichEdit1.SelStart:=j-1 ;
RichEdit1.SelLength:=1 ;
case StringText[j] of // 判斷文字為何,作顏色的處理
'M' : RichEdit1.SelAttributes.Color:=clYellow ;
'1' : RichEdit1.SelAttributes.Color:=clGreen ;
'2' : RichEdit1.SelAttributes.Color:=clRed ;
'3' : RichEdit1.SelAttributes.Color:=$000080FF ;
end
|
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
SelStart 的值錯了, 如下:
var i, j: integer; iSelStart: integer; begin // 游標停在第 20 行開頭 with RichEdit1 do begin SelStart := Perform(EM_LINEINDEX, 20, 0); Perform(EM_SCROLLCARET, 0, 0); SetFocus; end; // 計算停在第 20 行時的 SelStart 值 iSelStart := 0; for i := 0 to 20-1 do iSelStart := iSelStart Length(RichEdit1.Lines[i]) 2; // 加 2 是加上 #13#10 這兩個字元 // 以下是處理字的顏色 StringText :=RichEdit1.Lines.Strings[20]; //讀取第二十行的文字 for j := 1 to Length(StringText) do begin RichEdit1.SelStart := iSelStart j-1; RichEdit1.SelLength:=1; case StringText[j] of // 判斷文字為何,作顏色的處理 'M' : RichEdit1.SelAttributes.Color:=clYellow ; '1' : RichEdit1.SelAttributes.Color:=clGreen ; '2' : RichEdit1.SelAttributes.Color:=clRed ; '3' : RichEdit1.SelAttributes.Color:=$000080FF ; end; end; end;--- --<-<-<@ |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |