Hallo zusammen,
ich habe Probleme beim Formatieren von Text in RichEdit.
Mit diesem Code kann ich die Textattribute verändern (Farbe, Fett, usw.):
Delphi-Quellcode:
DBRichEdit1.SelStart:=0;
DBRichEdit1.Font.Name:=form1.BFont.Name;
DBRichEdit1.Font.Color:=form1.BFont.Color;
DBRichEdit1.Font.Size:=form1.BFont.Size;
DBRichEdit1.SelAttributes.Assign(DBRichEdit1.Font);
Mit diesem Code erkennt das RichEdit URLs und öffnet diese mit einem Click:
Delphi-Quellcode:
//create
mask := SendMessage(DBRichEdit1.Handle, EM_GETEVENTMASK, 0, 0);
SendMessage(DBRichEdit1.Handle, EM_SETEVENTMASK, 0, mask
or ENM_LINK);
SendMessage(DBRichEdit1.Handle, EM_AUTOURLDETECT, Integer(True), 0);
FOldWndProc := DBRichEdit1.Parent.WindowProc;
DBRichEdit1.Parent.WindowProc := NewWndProc;
procedure TForm4.NewWndProc(
var Message: TMessage);
var
p: TENLink;
strURL:
string;
begin
if (
Message.Msg = WM_NOTIFY)
then
begin
if (PNMHDR(
Message.lParam).code = EN_LINK)
then
begin
p := TENLink(Pointer(TWMNotify(
Message).NMHdr)^);
if (p.Msg = WM_LBUTTONDOWN)
then
begin
SendMessage(DBRichEdit1.Handle, EM_EXSETSEL, 0, Longint(@(p.chrg)));
strURL := DBRichEdit1.SelText;
ShellExecute(
Handle, '
open', PChar(strURL),
nil,
nil, SW_SHOWNORMAL);
end
end
end;
if Assigned(FOldWndProc)
then
FOldWndProc(
Message);
end;
Beides klappt prima - für sich alleine.
Zusammen allerdings blockieren sich die beiden Funktionen. Beides funktioniert dann nicht mehr.
Was mache ich falsch?