delphi RichEdit接受消息的问题


本文整理自网络,侵删。

 

问题:
procedure InitRichEditURLDetection(RE: TRichEdit);
var
mask: Word;
begin
mask := SendMessage(RE.Handle, EM_GETEVENTMASK, 0, 0);
SendMessage(RE.Handle, EM_SETEVENTMASK, 0, mask or ENM_LINK);
end;
//接收消息
procedure receive(var Msg: TMessage); message WM_NOTIFY;
RichEdi直接放在FORM上是可以收到消息
RichEdi放在panel上是就收不到消息,这种情况要怎么样处理?






解决办法:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, forms, Graphics, Controls,ComCtrls,
  ComObj, ActiveX, Dialogs,TntClasses,TntComCtrls,TntSysUtils,RichEdit,StdCtrls;

type
  TRichEdit=class(TTntCustomRichEdit)
  private
    procedure CNNotify(var Msg: TWMNotify); message CN_NOTIFY;
  protected
    { Protected declarations }
    procedure CreateWnd; override;
    procedure DoURLClick (const URL : Widestring; place:TCharRange);
  published
    property Align;
    property Alignment;
    property Anchors;
    property BevelEdges;
    property BevelInner;
    property BevelOuter;
    property BevelKind default bkNone;
    property BevelWidth;
    property BiDiMode;
    property BorderStyle;
    property BorderWidth;
    property Color;
    property Ctl3D;
    property DragCursor;
    property DragKind;
    property DragMode;
    property Enabled;
    property Font;
    property HideSelection;
    property HideScrollBars;
    property ImeMode;
    property ImeName;
    property Constraints;
    property Lines;
    property MaxLength;
    property ParentBiDiMode;
    property ParentColor;
    property ParentCtl3D;
    property ParentFont;
    property ParentShowHint;
    property PlainText;
    property PopupMenu;
    property ReadOnly;
    property ScrollBars;
    property ShowHint;
    property TabOrder;
    property TabStop default True;
    property Visible;
    property WantTabs;
    property WantReturns;
    property WordWrap;
    property OnChange;
    property OnContextPopup;
    property OnDragDrop;
    property OnDragOver;
    property OnEndDock;
    property OnEndDrag;
    property OnEnter;
    property OnExit;
    property OnKeyDown;
    property OnKeyPress;
    property OnKeyUp;
    property OnMouseDown;
    property OnMouseMove;
    property OnMouseUp;
    property OnMouseWheel;
    property OnMouseWheelDown;
    property OnMouseWheelUp;
    property OnProtectChange;
    property OnResizeRequest;
    property OnSaveClipboard;
    property OnSelectionChange;
    property OnStartDock;
    property OnStartDrag;
    property OnDblClick;
  end;

  TForm1 = class(TForm)
    RichEdit1: TRichEdit;
    Button1: TButton;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TRichEdit.CreateWnd;
var
  mask: Word;
begin
  inherited CreateWnd;
  SendMessage(Handle, EM_AUTOURLDETECT,1, 0);
  mask := SendMessage(Handle, EM_GETEVENTMASK, 0, 0);
  SendMessage(Handle, EM_SETEVENTMASK, 0, mask or ENM_CHANGE or ENM_SELCHANGE or
     ENM_REQUESTRESIZE or ENM_PROTECTED or ENM_LINK);  
end;

procedure TRichEdit.DoURLClick(const URL : Widestring; place:TCharRange);
begin

end;

procedure TRichEdit.CNNotify(var Msg: TWMNotify);
var
  p: TENLink;
begin
  if (Msg.NMHdr^.code = EN_LINK) then
    begin
    p := TENLink(Pointer(Msg.NMHdr)^);
    if (p.Msg = WM_LBUTTONDOWN) then
      try
       Perform(EM_EXSETSEL, 0, Longint(@(p.chrg)));
       DoURLClick(SelText,p.chrg);
      except
      end;
    end;

 inherited;
end;


end.

相关阅读 >>

Delphi 打开android应用信息

Delphi idhttp批量上传图片

Delphi datasnap 上传/下载大文件(本demo以图传片文件为例)

Delphi 有授权许可的字符串拷贝函数源码

Delphi unigui程序部署到服务器

Delphi中实现全角转半角

Delphi 获取unigui 控件id 及获取html值

Delphi 10.4改进 内联变量声明

Delphi 过滤开头 结尾 全部 空格的函数

Delphi tgpimage 把图像转存为其他格式

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...