CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C++ Builder >  基础类

昏啊,richedit怎么这么不爽!又没popup又没onclick 事件!?

楼主ahlang(一一)2003-06-04 00:09:38 在 C++ Builder / 基础类 提问

这个richedit到底是不是borland自己写的,真不爽,整一个第三方插件一样!  
  没有快捷菜单还说可以自己编!没有onclick事件该怎么办啊!?  
  各位高手,怎样添加onclick事件呢? 问题点数:100、回复次数:10Top

1 楼Libran()回复于 2003-06-04 00:16:01 得分 45

用OnMouseUp事件就是了Top

2 楼Libran()回复于 2003-06-04 00:18:50 得分 0

在OnMouseUp事件里,判断参数Button是否为左键(mbLeft),就相当于OnClick了Top

3 楼ahlang(一一)回复于 2003-06-04 00:24:31 得分 0

哦  
  我是新手  
  我去试试  
  Top

4 楼ahlang(一一)回复于 2003-06-04 00:29:38 得分 0

Libran(),不行啊,那样子在选中文字之后放开mouse也会引发mouseup+(button==mbLeft)事件啊  
  跟Onclick不等效~~~Top

5 楼kingcaiyao(aking)回复于 2003-06-04 09:22:30 得分 45

从TRichEdit的继承层次来看,TRichEdit是从TWinControl继承下来的,应该有单击消息处理函数click,只是它没有公布出来,只需要重写一个RichEdit控件,在__published域中将OnClick事件公布出来就行了,刚写了一个:  
  .h   File  
  #ifndef   TMyRichEditH  
  #define   TMyRichEditH  
  #include   <SysUtils.hpp>  
  #include   <Controls.hpp>  
  #include   <Classes.hpp>  
  #include   <Forms.hpp>  
  #include   <ComCtrls.hpp>  
  #include   <StdCtrls.hpp>  
  //因为我是从抽象类TCustomRichEdit继承,所以需要重新公布所有的属性和事件。  
  class   PACKAGE   TMyRichEdit   :   public   TCustomRichEdit  
  {  
  private:  
  protected:  
  public:  
        __fastcall   TMyRichEdit(TComponent*   Owner);  
  __published:  
        __property   Alignment;  
        __property   Anchors;  
        __property   BiDiMode;  
        __property   BorderStyle;  
        __property   BorderWidth;  
        __property   Color;  
        __property   Constraints;  
        __property   Cursor;  
        __property   DragCursor;  
        __property   DragKind;  
        __property   DragMode;  
        __property   Enabled;  
        __property   Font;  
        __property   Height;  
        __property   HelpContext;  
        __property   HideScrollBars;  
        __property   HideSelection;  
        __property   Hint;  
        __property   ImeMode;  
        __property   ImeName;  
        __property   Left;  
        __property   Lines;  
        __property   MaxLength;  
        __property   Name;  
        __property   ParentBiDiMode;  
        __property   ParentColor;  
        __property   ParentFont;  
        __property   ParentShowHint;  
        __property   PlainText;  
        __property   PopupMenu;  
        __property   ReadOnly;  
        __property   ScrollBars;  
        __property   ShowHint;  
        __property   TabOrder;  
        __property   TabStop;  
        __property   Tag;  
        __property   Top;  
        __property   Visible;  
        __property   WantReturns;  
        __property   WantTabs;  
        __property   Width;  
        __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   OnMouseUp;  
        __property   OnMouseMove;  
        __property   OnMouseWheel;  
        __property   OnMouseWheelDown;  
        __property   OnMouseWheelUp;  
        __property   OnProtectChange;  
        __property   OnResizeRequest;  
        __property   OnSaveClipboard;  
        __property   OnSelectionChange;  
        __property   OnStartDock;  
        __property   OnStartDrag;  
        __property   OnClick;//重要的就是这一行,将OnClick事件公布出来  
  };  
  #endif  
  .cpp   File(没有什么新内容,不需要贴出来)  
   
   
  Top

6 楼Libran()回复于 2003-06-04 12:24:20 得分 0

选中文字之后放开mouse也会引发mouseup+(button==mbLeft)事件  
  ——在TEdit和TMemo离选中文字之后放开,也一样会触发OnClick事件的呀  
  如果你不要,再加上判断RichEdit->SelLength是否为零好了;如果说还有问题,就是需要处理鼠标离开的消息了Top

7 楼yingyys(鹰)回复于 2003-06-04 12:59:41 得分 0

学学Top

8 楼ahlang(一一)回复于 2003-06-04 13:26:19 得分 0

quote/////////////////////////////////////////////////  
  在TEdit和TMemo离选中文字之后放开,也一样会触发OnClick事件的呀  
  如果你不要,再加上判断RichEdit->SelLength是否为零好了;如果说还有问题,就是需要处理鼠标离开的消息了  
  //////////////////////////////////////////////////////  
  是吗?没留意。我后来也是这样做的,判断SelLength是否为零。虽然觉得有点笨,不过问题还是解决了.但是又有新问题了,双击的事件又该怎么写?  
  觉得kingcaiyao(AKing)说得对,如果他的办法好用就好了,一了百了。Top

9 楼Libran()回复于 2003-06-04 13:33:39 得分 1

双击事件可以响应   WM_LBUTTONDBLCLK   消息,不过与OnMouseUp事件会有冲突(双击时仍会触发OnMouseUp事件),要加很多判断、处理  
  要想一了百了,当然还是用AKing的办法好了  
  Top

10 楼whitetiger8(键盘未敲坏,基本功未练成)回复于 2003-06-04 13:38:55 得分 9

是啊,不要乱说啊:)那个控件还行,如果实在受不了,自己写一个吧:)  
  用OnMouseUp事件比ONCLICK好!!Top

相关问题

  • 请问怎么在richedit控件中响应鼠标事件啊?
  • RichEdit
  • RichEdit
  • RICHEDIT
  • 有个问题,如何捕捉IE的Popup新窗口事件???
  • 如何在richedit的keydown事件中,使用sendmessage取得当前位置的坐标
  • 我想在Memo(或RichEdit)的光标的行位置改变时做一些事情,请问用哪个事件?
  • 一种关于popup窗体事件的接收解决办法,欢迎大家讨论~
  • rtf,RichEdit
  • 大事件!大事件!

关键词

  • 消息
  • property
  • 事件
  • richedit
  • mbleft
  • onmouseup
  • sellength
  • 触发
  • 双击
  • 判断

得分解答快速导航

  • 帖主:ahlang
  • Libran
  • kingcaiyao
  • Libran
  • whitetiger8

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo