昏啊,richedit怎么这么不爽!又没popup又没onclick 事件!?
这个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




