国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

語(yǔ)法高亮

2019-11-18 18:49:20
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

在 RichEdit 中實(shí)現(xiàn)代碼著色

下面的代碼將以指定顏色對(duì)一些指定單詞著色,就象delphi中的代碼編輯器那樣。

PRocedure CodeColors(Form : TForm;Style : String; RichE : TRichedit;                         InVisible : Boolean); const   // 符號(hào)...   CodeC1: array[0..20] of String = ('#','$','(',')','*',',',           '.','/',':',';','[',']','{','}','<','>',           '-','=','+','','@');   // 保留字...   CodeC2: array[0..44] of String = ('and','as','begin',           'case','char','class','const','downto',           'else','end','except','finally','for',           'forward','function','if','implementation','interface',           'is','nil','or','private','procedure','public','raise',           'repeat','string','to','try','type','unit','uses','var',           'while','external','stdcall','do','until','array','of',           'in','shr','shl','cos','div'); var   FoundAt : LongInt;   StartPos, ToEnd, i : integer;   OldCap,T : String;   FontC, BackC, C1, C2 ,C3 ,strC, strC1 : TColor; begin   OldCap := Form.Caption;   with RichE do   begin     Font.Name := 'Courier New';     Font.Size := 10;     if WordWrap then WordWrap := false;     SelectAll;     SelAttributes.color := clBlack;     SelAttributes.Style := [];     SelStart := 0;     if InVisible then     begin       Visible := False;       Form.Caption := 'Executing Code Coloring...';     end;   end;   BackC := clWhite; FontC := clBlack;   C1 := clBlack; C2 := clBlack; C3 := clBlack;   strC := clBlue; strC1 := clSilver;   if Style = 'Twilight' then   begin     BackC := clBlack; FontC := clWhite;     C1 := clLime; C2 := clSilver; C3 := clAqua;     strC := clYellow; strC1 := clRed;   end   else   if Style = 'Default' then   begin     BackC := clWhite; FontC := clBlack;     C1 := clTeal; C2 := clMaroon; C3 := clBlue;     strC := clMaroon; strC1 := clSilver;   end   else   if Style = 'Ocean' then   begin     BackC := $00FFFF80; FontC := clBlack;     C1 := clMaroon; C2 := clBlack; C3 := clBlue;     strC := clTeal; strC1 := clBlack;   end   else   if Style = 'Classic' then   begin     BackC := clNavy; FontC := clYellow;     C1 := clLime; C2 := clSilver; C3 := clWhite;     strC := clAqua; strC1 := clSilver;   end   else   begin     with RichE do     begin       T := '{'+Style+' = Invalid Style [Default,Classic,Twilight,Ocean] ONLY! }';       Lines.Insert(0,T);       StartPos := 0;       ToEnd := Length(Text) - StartPos;       FoundAt := FindText(T, StartPos, ToEnd, [stWholeWord]);       SelStart := FoundAt;       SelLength := Length(T);       SelAttributes.Color := clRed;       SelAttributes.Style := [fsBold];       StartPos := 0;       ToEnd := Length(Text) - StartPos;       FoundAt := FindText('ONLY!', StartPos, ToEnd, [stWholeWord]);       SelStart := FoundAt;       SelLength := 4;       SelAttributes.Color := clRed;       SelAttributes.Style := [fsBold,fsUnderLine];     end;   end;   RichE.SelectAll;   RichE.color := BackC;   RichE.SelAttributes.color := FontC;   for i := 0 to 100 do   begin     with RichE do     begin       StartPos := 0;       ToEnd := Length(Text) - StartPos;       FoundAt := FindText(IntToStr(i), StartPos, ToEnd, [stWholeWord]);       while (FoundAt <> -1) do       begin         SelStart := FoundAt;         SelLength := Length(IntToStr(i));         SelAttributes.Color := C1;         SelAttributes.Style := [];         StartPos := FoundAt + Length(IntToStr(i));         FoundAt := FindText(IntToStr(i), StartPos, ToEnd, [stWholeWord]);       end;     end;   end;   for i := 0 to 20 do   begin     with RichE do     begin       StartPos := 0;       ToEnd := Length(Text) - StartPos;       FoundAt := FindText(CodeC1[i], StartPos, ToEnd, []);       while (FoundAt <> -1) do       begin         SelStart := FoundAt;         SelLength := Length(CodeC1[i]);         SelAttributes.Color := C2;         StartPos := FoundAt + Length(CodeC1[i]);         FoundAt := FindText(CodeC1[i], StartPos, ToEnd, []);       end;     end;   end;   for i := 0 to 44 do   begin     with RichE do     begin       StartPos := 0;       ToEnd := Length(Text) - StartPos;       FoundAt := FindText(CodeC2[i], StartPos, ToEnd, [stWholeWord]);       while (FoundAt <> -1) do       begin         SelStart := FoundAt;         SelLength := Length(CodeC2[i]);         SelAttributes.Color := C3;         SelAttributes.Style := [fsBold];         StartPos := FoundAt + Length(CodeC2[i]);         FoundAt := FindText(CodeC2[i], StartPos, ToEnd, [stWholeWord]);       end;     end;   end;   Startpos := 0;   with RichE do   begin     FoundAt := FindText('', StartPos, Length(Text), []);     while FoundAt <> -1 do     begin       SelStart := FoundAt;       Startpos := FoundAt+1;       FoundAt := FindText('', StartPos, Length(Text), []);       if FoundAt <> -1 then       begin         SelLength := (FoundAt - selstart)+1;         SelAttributes.Style := [];         SelAttributes.Color := strC;         StartPos := FoundAt+1;         FoundAt := FindText('', StartPos, Length(Text), []);       end;     end;   end;   Startpos := 0;   with RichE do   begin     FoundAt := FindText('{', StartPos, Length(Text), []);     while FoundAt <> -1 do     begin       SelStart := FoundAt;       Startpos := FoundAt+1;       FoundAt := FindText('}', StartPos, Length(Text), []);       if FoundAt <> -1 then       begin         SelLength := (FoundAt - selstart)+1;         SelAttributes.Style := [];         SelAttributes.Color := strC1;         StartPos := FoundAt+1;         FoundAt := FindText('{', StartPos, Length(Text), []);       end;     end;   end;     if InVisible then   begin     RichE.Visible := True;     Form.Caption := OldCap;   end;   RichE.SelStart := 0; end; 

上一篇:隱藏任務(wù)條托盤(pán)區(qū)中的時(shí)鐘

下一篇:TreeView的使用

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
學(xué)習(xí)交流
熱門(mén)圖片

新聞熱點(diǎn)

疑難解答

圖片精選

網(wǎng)友關(guān)注

主站蜘蛛池模板: 会同县| 商河县| 民县| 富阳市| 宜城市| 顺义区| 疏附县| 灯塔市| 分宜县| 茂名市| 东莞市| 双柏县| 和田市| 临城县| 英吉沙县| 肥东县| 察哈| 新化县| 平遥县| 阜南县| 景洪市| 晋江市| 红河县| 沙田区| 巴林左旗| 太保市| 长白| 白山市| 安阳县| 宜城市| 安徽省| 涞水县| 蒙山县| 平塘县| 全州县| 南安市| 平江县| 宜城市| 通榆县| 阜新| 克什克腾旗|