delphi 7编写的代码查看编辑器对注释的着色

procedure TForm1.RichEdit1Change(Sender: TObject);
var
  point: TPoint;
  x, x1, y, i, i1, i2, i3, i4, p: Integer;
  s1: string;
  pa: array[1..10] of char;
begin
 (********鼠标位置和焦点位置保存*********)
  x := point.X;
  y := point.Y;
  x1 := RichEdit1.SelStart;

  (*对注释进行删除时,对注释删除后的前半部分恢复常规并且字体加黑设置,如:'(*'删除'*'后'('部分要恢复常规并且字体加黑*)
  i := 0;
  p := Length(RichEdit1.Text);
  RichEdit1.SelStart := i;
  RichEdit1.SelLength := p;
  RichEdit1.SelAttributes.Style := [];
  RichEdit1.SelAttributes.Color := clBlack;


//变量赋初值
  i := 0;
  i1 := 0;
  p := 0;

  //
  (*******注释"{"和"}"的渲染*************************)
  while p >= 0 do
  begin
    i := 0;
    p := 0;

    i := PosEx('{', RichEdit1.Text, i1) - 1;
    p := PosEx('}', RichEdit1.Text, i1);

    if i > 0 then
    begin
      if (p = 0) or (p < i) then
      begin
        p := Length(RichEdit1.Text);
      end;
    end;

    if p <> 0 then
    begin
      i1 := p + 1;

      s1 := (copy(RichEdit1.Text, i, 1));
      pa[1] := s1[1];
      if (not (pa[1] in [''''])) and (not (pa[1] in ['"'])) or (i < p) then
      begin
        RichEdit1.SelStart := i;
        RichEdit1.SelLength := p - i;
        Richedit1.SelAttributes.Color := clGreen;
        RichEdit1.SelAttributes.Style := [fsItalic];
      end;

    end
    else
      Break;

  end;

 //

  //变量赋初值
  i := 0;
  i1 := 0;
  p := 0;

  (*******注释"(*"和'*)"的渲染 ********************************************)
  while p >= 0 do
  begin
    i := 0;
    p := 0;

    i := PosEx('(*', RichEdit1.Text, i1) - 1;
    p := PosEx('*)', RichEdit1.Text, i1);

    if i > 0 then
    begin
      if (p = 0) or (p < i) then
      begin
        p := Length(RichEdit1.Text);
      end;
    end;

    if p <> 0 then
    begin
      i1 := p + 2;

      s1 := (copy(RichEdit1.Text, i, 1));
      pa[1] := s1[1];
      if (not (pa[1] in [''''])) and (not (pa[1] in ['"'])) or (i < p) then
      begin
        RichEdit1.SelStart := i;
        RichEdit1.SelLength := p - i + 1;
        Richedit1.SelAttributes.Color := clGreen;
        RichEdit1.SelAttributes.Style := [fsItalic];
      end;

    end
    else
      Break;

  end;

(********************(注释'//"的渲染)*****************************************)

  i := 0;
  i1 := 0;
  i2 := 0;
  i3 := 0;
  i4 := 0;
  p := 0;
  i := PosEx('//', RichEdit1.Text, i1);
  if i > 0 then
  begin
    while i > 0 do
    begin
      i3 := 0;
      i := PosEx('//', RichEdit1.Text, i1);
      i1 := i + 3;
      begin
        RichEdit1.SelStart := i - 1;
        i4 := SendMessage(Richedit1.handle, EM_LINEFROMCHAR, Richedit1.selstart, 0);

        if i4 >= 0 then
        begin
          for i2 := 0 to i4 do
          begin
            i3 := i3 + Length(RichEdit1.Lines[i2]) + 2;  //DBRichEdit显示时用i3 := i3 + Length(RichEdit1.Lines[i2]);


          end;
          RichEdit1.SelLength := i3 - i;
          Richedit1.SelAttributes.Color := clGreen;
          RichEdit1.SelAttributes.Style := [fsItalic];
        end;
      end;
    end;
  end;
  
 (********鼠标位置和焦点位置重新植入*******************************************)
  point.X := x;
  point.Y := y;
  RichEdit1.SelStart := x1;
  RichEdit1.SetFocus;
end;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冰雪青松

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值