首先,该memo从custommemo继承,它有这样外观:属于平面的,边框是可以设置颜色的线,对应的颜色变量为fedgecolor,另外,离边框以内的两个象素处,还有另一个框,当鼠标进入memo时,这个框会显示,当鼠标离开时,为个框消失,同样也可以设置颜色,对应变量为fentercolor。
那么鼠标进入和离开怎么判断呢,这里memo将截获两个delphi的内部消息:
//下面两个获得delphi的内部消息,鼠标进入和离开时发生
procedure cmmouseenter (var message: tmessage); message cm_mouseenter;
procedure cmmouseleave (var message: tmessage); message cm_mouseleave;
其实父类已经截获了这两个消息,并作了相应处理,所以tcoolmemo中的消息处理函数要
inherited;再作自己的处理。这里又用到了一个变量
mousein:boolean;//标识鼠标是否进入组件
接下来tcoolmemo还要截获两个消息:
procedure wmpaint (var message: tmessage); message wm_paint;
procedure wmnccalcsize (var message: twmnccalcsize); message wm_nccalcsize;
第一个很熟悉,当需要重画时,触发该消息,