Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
Delphi 7 Enterprise
|
Re: [Richedit]einzelne Wörten hervorheben
17. Jan 2008, 08:05
Vielleicht so...
Delphi-Quellcode:
procedure HtmlToRTF(RichEdit:TRichEdit; Html: string);
var RegExpr:TRegExpr;
begin
RegExpr:=TRegExpr.Create;
try
RegExpr.ModifierG:=false;
RegExpr.Expression:=' [b](.*)[/b]';
RichEdit.SelectAll;
RichEdit.SelText:=
' {\rtf1' +
RegExpr.Replace( Html, ' {\\b $1}', true) +
' }';
finally
RegExpr.Free;
end;
end;
Aufruf...
HtmlToRTF(RichEdit1, '[b]Wichtig:[/b] Ich bin [b]fett[/b] gedruckt.');
Edit: Und hier nochmal eine allgemeinere Lösung:
Delphi-Quellcode:
procedure HtmlToRTF(RichEdit:TRichEdit; Html: string);
type
TMyResult = record
HB, HE, R: string;
end;
const
cAttribs: array[1..3] of TMyResult = (
(HB:' [b]'; HE:' [/b]'; R:' \b $1'),
(HB:' [i]'; HE:' [/i]'; R:' \i $1 '),
(HB:' <u>'; HE:' </u>'; R:' \ul $1')
);
var
RegExpr:TRegExpr;
i:integer;
result: string;
begin
RegExpr:=TRegExpr.Create;
try
result:= Html;
RegExpr.ModifierG:=false;
for i:=low(cAttribs) to high(cAttribs) do begin
RegExpr.Expression:=cAttribs[i].HB + ' (.*)' + cAttribs[i].HE;
result:=
' {\rtf1' +
RegExpr.Replace(
result,
' {' + StringReplace(cAttribs[i].R, ' \', ' \\', [rfReplaceAll]) + ' }',
true
) +
' }';
end;
RichEdit.SelectAll;
RichEdit.SelText:=result;
finally
RegExpr.Free;
end;
end;
Aufruf...
HtmlToRTF(RichEdit1, 'normal, [b]fett[/b], [i]kursiv[/i], <u>unterstrichen</u>');
RegExpr
Gruss
Thorsten
|
|
Zitat
|