PowerBuilde应用开发系列讲座(19)续
日期:2007年5月2日 作者: 查看:[大字体 中字体 小字体]-
p>工作原理OPEN事件中的代码是为了调整卷滚条的滚动速度。AddHScroll和AddVScroll中的代码分别加入水平和垂直卷滚条。RemoveHScroll和RemoveVScroll除分别移去水平和垂直卷滚条外,还要使用WindowsAPI调用。
GetScrollPos函数可返回滚动块在卷滚条上的当前位置。我们必须告诉该函数需要的是哪个窗口上的哪个卷滚条的信息。在WindowsAPI中,"指向"一个窗口的方法是通过引用它 的"句柄"。PowerBuilder提供了获得应用中的指定窗口句柄的函数,这个函数叫作Handl e()。因为这些自定义用户事件是在窗口自身当中定义的,所以我们只需要将"this"作为 参数传递给Handle函数。0做为第二个参数,告诉Handle函数我们需要知道水平卷滚条的 值;而传递1则表示需要知道垂直卷滚条的值。通过将当前卷滚位置与最小位置相比较,我们就会知道用户是否滚动过窗口。如果滚动过窗口,我们就向窗口发送一个消息告诉它将窗口恢复原状。与WM_VSCROLL和WM_HSCROLL消息相对应的消息号分别是227和226。在WM_VSCROLL中,我们发送SB_TOP(6),它使窗口滚动到顶部。在WM_HSCROLL中,我们发送5使窗口滚动到左边。当用户试图最小化或最大化窗口时,卷滚条的行为会有所不同。
我们知道,PowerBuilder 的resize事件所映射的Windows事件WM_SIZE是在一个窗口被改变大小以后触发的。而当 用户试图最小化一个窗口时,要在最小化发生之前关闭卷滚条。因此,在这种情况下resi ze事件中的代码是来不及起作用的。在这里,我们采取的方法是定义了一个映射到WM_CO MMAND消息的事件。当用户试图最小化窗口时,随该消息一起发送的值是61472。因此,如果该事件的值是61472,我们只需简单地移去卷滚条。问题是完成这些操作后,系统还将激 发一个resize事件,resize事件中是引入实例变量ib_minimized的地方。在syscommand事 件中我们设定实例变量,在resize事件中,检查该变量。该变量告诉resize事件用户正在 最小化窗口,于是resize事件就不会处理卷滚条。如果用户将窗口复原,syscommand事件 将再次被激发,但这次传递给消息的值就不是61472了。因此syscommand事件中仅仅将实 例变量标识复位,于是resize事件就又能处理卷滚条了。本文的讨论范围。 使用PowerBuilder另外500个函数(上) 乍一看到这个题目,我们可能会觉得很玄。PowerBuilder系统自身提供的函数大约只有2 00多个(不考虑多态函数),我们何从得到另外500多个函数呢? 我们在以前讨论过如? 用Windows API标准调用外部函数的问题。而使用过WindowsSD K编程的开发人员都知道,在USER.EXE、GDI.EXE等可执行文件和动态连接库中,Windows本身提供了大量函数。这些函数在PowerBuilder中都是可以直接调用的。这样我们的函数库就一下子又扩充了500多个。 在这些API函数中,相当一部分是非常有用的,我们将分类向大家介绍。
本期介绍一些在处理自动卷滚条时用到的函数。自动卷滚条缺省情况下,MDI表单是可以重新设定大小的。这样用户就可以将窗口设成比原先的小。这种情况下,必须对窗口设置卷滚条的属性,以访问窗口上的一些控件。而另一方面,除非窗口确实小到不足以显示所有的控件,否则没有必要提供卷滚条。许多Windows的MDI应用在处理这一问题时是这样做的:当窗口小到无法显示所有控件时, 打开卷滚条;而窗口大小合适时,关闭卷滚条。PowerBuilder系统本身并没有提供自动处理上述操作的功能,但是我们自己加上这一功能是很容易的,而且实现上述自动卷滚条的功能也用不到Windows API调用,只需在MDI表单窗口的resize事件中触发另一个事件,以判断在当前窗口尺寸小于某一阈值时显示卷滚条(后面将介绍为什么要另外触发一个事件 ,而不在resize事件中直接做)。此后用户在滚动卷滚条时,窗口会自动随之滚动;当用户再次改变窗口大小并大于该阈值时,我们应该关闭卷滚条,我们仍然可以不调用Windows API而做到这一点。然而在整个例子中,真正有难度的是在关闭卷滚条之前,我们需要检查 用户是否滚动了卷滚条。如果用户滚动了卷滚条,我们则应当首先将窗口移回原始状态, 这就要用到Windows API函数了。因为我们需要确定:卷滚条的滚动范围、滚动块在卷滚 条上的当前位置。为了做到这一点,我们需要使用两个Windows API调用:GetScrollPos和 GetScrollRange。 为了使用这两个API函数,首先在需要使用它们的窗口中将它们声明为local external函 数。在Local external函数对话框中,加入如下语句:
- [1] [2] [3] [4] 下一页
-
- PowerBuilde应用开发系列讲座(19)续 相关文章:
- ·PowerBuilde应用开发系列讲座(19)续
- PowerBuilde应用开发系列讲座(19)续 相关软件
- 特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作
- 者.文章版权归文章原始作者所有.对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转
- 载的文章有版权问题请联系编辑人员,我们尽快予以更正. 转载请注明来源:http://www.hackhome.com
下一篇:PB应用的数据库联接的安全防范
精品推荐
热点TOP10
- ·在PB中用Flash制作Splash封面
- ·在PB中如何对ASA进行数据备份
- ·循序渐进学习Power Builder 6.0(13-3)
- ·循序渐进学习Power Builder 6.0(15-4)
- ·循序渐进学习Power Builder 6.0(15-2)
- ·循序渐进学习Power Builder 6.0(14-3)
- ·循序渐进学习Power Builder 6.0(14-2)
- ·在pb6.0以上版本中创建数据库
- ·PowerBuilder应用开发系列讲座(23)
- ·PowerBuilder应用开发系列讲座(39)
- ·PowerBuilder应用开发系列讲座(4)
- ·在PB中用OLE存取blob类型数据
- ·PB5对SQLSERVER6数据库的访问
- ·深入了解PowerBuilder的数据窗
- ·PowerBuilder应用开发系列讲座(38)
- ·在PB中动态调用函数
- ·PowerBuilder应用开发系列讲座(3)
- ·用PowerBuilder6.0建立B/S结构应用程序
- ·PowerBuilder实用技巧八则
- ·PB应用ODBC访问不同数据库
