Einzelnen Beitrag anzeigen

Steffen0917

Registriert seit: 20. Jun 2005
64 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

Probleme mit RichEdit

  Alt 12. Mai 2019, 22:47
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?
Steffen
  Mit Zitat antworten Zitat