Thema: Highlighter

Einzelnen Beitrag anzeigen

Popov
(Gast)

n/a Beiträge
 
#3

AW: Highlighter

  Alt 27. Okt 2012, 22:08
Wenn der Cursor zurückspringt, dann mußt du seine Position berechnen und neu positionieren.

//EDIT:

Also wenn es nicht perfekt sein muss, hier ein Ansatz von fünf Minuten. Es werden zwar nur die reservierten Wörter beachtet, aber wenn es reicht, dann reicht auch TRichEdit.:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
const
  HT_BOLD = 'procedure,const,var,type,begin,end,with,do,unit,uses,class'; //usw.
var
  sl: TStringList;
  i, p: Integer;
  s: String;
begin
  with RichEdit1 do
  begin
    Lines.BeginUpdate;
    WordWrap := False;
    SelectAll;
    SelAttributes.Name := 'Courier New';
    SelAttributes.Size := 10;

    sl := TStringList.Create;
    try
      sl.CommaText := HT_BOLD;
      for i := 0 to sl.Count - 1 do
      begin
        SelStart := 0;
        SelLength := 0;
        repeat
          p := FindText(sl[i], SelStart, MaxInt, [stMatchCase]);
          if p > -1 then
          begin
            SelStart := p;
            SelLength := Length(sl[i]);
            SelAttributes.Style := SelAttributes.Style + [fsBold];
            SelAttributes.Color := clNavy;
            SelStart := SelStart + 1;
          end;
        until p = -1;
      end;
    finally
      sl.Free;
    end;

    Lines.EndUpdate;
  end;
end;

Geändert von Popov (27. Okt 2012 um 22:19 Uhr)
  Mit Zitat antworten Zitat