五.“飞播字幕”的制作
- 创建一个新类, 名称为FlyString,选择派生于容器类(container),并存放于FlyString.vcx文件中。
- 将FlyString的大小调整为120×20大小,并设置SpecialEffect属性为“凹下”。
- 新建属性cOldFlyText, 其初始值为空,此属性主要用于定时器的Timer事件,用户不需设置,也不用改动,在过程中会自动填入。
- 新建属性cFlyTexy, 其初始值为空,也可输入一些初始化信息,比如:“欢迎您使用本程序”,则当建立一新对象后,默认的将是此信息,使用者可将其改为所要显示的具体信息。
- 新建属性nCurPos,其初始值为1,用于指示当前显示到第几个字符。
- 在FlyString上放置一个定时器控制Timer1, 将其属性Interval设置为700,以取得较好的显示结果,如果其值太小,则显示过快,用户可根据需要自行设置。
- 在Timer1的过程Timer中添加代码(代码在可视对象内的右侧)。
---- 这个控制的效果是让字幕从左向右飞行,从右向左飞行的原理与此类似,读者可参考自行编制。
六.巧用Grid对象
---- 我们在用VFP设计一个应用系统时, 信息的浏览是其中相当重要的一个功能,通常其实现方法均采用Grid对象来显示数据信息。但在使用过程中也存在一些不足,就是当使用者在记录之间移动时,只有获得焦点的那条记录的某一字段以不同于Grid背景的颜色显示,给人一种非专业的软件制作的感觉,如果不用Grid对象,就需要编制复杂的过程去实现这一功能。
---- 其实,利用Grid对象,我们完全可以实现当数据记录移动时,整条记录均用同一种颜色突出显示,即当数据记录移动时,用颜色动态变化显示相对光标所在的位置。笔者在工作就成功地运用了这一方法,从而使整个系统的信息浏览功能大为增色,显示了与专业软件同样的魅力。
---- 首先定义一个Grid对象, 并设置好其属性,然后在其AfterRowColChange事件过程中写下如下的内容: LPARAMETERS nColIndex
this.setall(″dynamicbackcolor″,″
iif(this.activerow〈〉recn(),rgb(255,
255,255),rgb(0,0,255))″,″column″)
---- 这样一来, 就能达到在数据记录移动时,在相对的Row显示动态颜色变化。在上面的设计中首先使用了SetAll() 方法设定Grid中的Column层次的 DynamicBackColor(动态背景颜色属性),然后在第二个参数中使用了Grid 对象的ActiveRow反映相对的行数,若不等于记录编号时,则通过 RGB(255,255,255) 送出白色背景,若相对行等于记录编号时,则通过 RGB(0,0,255)送出绿色背景色(读者可根据个人爱好自行设定)。
---- 另外,还要提醒读者有两点需要特别注意:
- 在AfterRowColChange事件过程中一定要使用DynamicBackColor属性, 而不能用 BackColor属性,因为这样会将所有的数据记录变为设定的颜色。
- 因为使用了ActiveRow属性与RECN0()函数配合使用,因此请不要在所显示的记录中设定主索引,因为ActiveRow属性不会自动配合索引值中的记录编号(若设定主索引,则执行之后将从当前记录开始直至第一条记录均为设定的特显颜色)。
|