Har faktisk lige spurgt om dette, men dengang var det til en teksteditor...
Denne har jeg nu besluttet mig for at lave om til en webcoder, og har derfor ændret i den kode som jeg fik før, så den highlighter med forskellige farver til forskellige tags....
Det virker for så vidt også fint, men jeg har sat "highlight" funktionen i richeditens OnChange, men nu "blinker" teksten hver gang jeg skriver noget...
procedure TForm2.Highlight(RichEdit: TRichEdit);
var
I, tagStart: Integer;
S, STag: String;
Col: TColor;
isTag, findTag: Boolean;
begin
isTag := False;
findTag := True;
RichEdit.SetFocus;
Col := clBlack;
tagStart := 0;
For I := 0 to Length(RichEdit.Text) do
begin
RichEdit.SelStart := I;
RichEdit.SelLength := 1;
S := RichEdit.SelText;
If S = '<' then
begin
isTag := True;
findTag := True;
tagStart := I;
end;
//Tjek hvilken kode det er!!
If (isTag) And (findTag) Then
begin
STag := STag + S;
If (STag[Length(STag)] = ' ') Or (STag[Length(STag)] = '>') then
begin
findTag := False;
STag := '';
end;
end;
//Find Tags
If Length(STag) > 0 Then
begin
RichEdit.SelStart := tagStart;
RichEdit.SelLength := Length(STag);
STag := LowerCase(STag);
//Html
//Font
If (STag = '<font') Or (STag = '</font') then
begin
Col := clBlue;
end
//Link
Else If (STag = '<a') Or (STag = '</a') then
begin
Col := clRed;
end
//Images
Else If STag = '<img' then
begin
Col := clTeal;
end
//Forms
Else If (STag = '<form') Or (STag = '<input') Or (STag = '<textarea') Or (STag = '</textarea') Or (STag = '</form') then
begin
Col := clGreen;
end
//Comments
Else If STag = '<!--' then
begin
Col := clGray;
end
//Tables
Else If (STag = '<table') Or (STag = '<tr') Or (STag = '<td') Or (STag = '</table') then
begin
Col := clOlive;
end
//Rest
Else
begin
Col := clNavy;
end;
//Asp
If STag = '<%' then
Col := $00804000;
//Php
If STag = '<?' then
Col := $00C08000;
//Scripts
If STag = '<script' Then
Col := clMaroon;
end;
If isTag = False then
Col := clBlack;
RichEdit.SelAttributes.Color := Col;
If (S = '>') Then
begin
isTag := False;
end;
end;
RichEdit.SelLength := 0;
end;
Og det her er funktionen der kalder den:
procedure TForm2.Memo1Change(Sender: TObject);
var
I: Integer;
begin
Saved.Checked := False;
Form1.FindNext1.Enabled := False;
I := RichEdit1.SelStart;
//Tjek for html, asp, php og java script
Highlight(RichEdit1);
RichEdit1.SelStart := I;
end;
/Mads