PB:自动卷滚条

自动卷滚条 
缺省情况下,MDI表单是可以重新设定大小的。这样用户就可以将窗口设成比原先的小。这种情况下,必须对窗口设置卷滚条的属性,以访问窗口上的一
些控件。而另一方面,除非窗口确实小到不足以显示所有的控件,否则没有必要提供卷滚条。 
许多Windows的MDI应用在处理这一问题时是这样做的:当窗口小到无法显示所有控件时,打开卷滚条;而窗口大小合适时,关闭卷滚条。PowerBuilder系
统本身并没有提供自动处理上述操作的功能,但是我们自己加上这一功能是很容易的,而且实现上述自动卷滚条的功能也用不到Windows API调用,只需
在MDI表单窗口的resize事件中触发另一个事件,以判断在当前窗口尺寸小于某一阈值时显示卷滚条(后面将介绍为什么要另外触发一个事件,而不在
resize事件中直接做)。此后用户在滚动卷滚条时,窗口会自动随之滚动;当用户再次改变窗口大小并大于该阈值时,我们应该关闭卷滚条,我们仍然可以
不调用Windows API而做到这一点。然而在整个例子中,真正有难度的是在关闭卷滚条之前,我们需要检查用户是否滚动了卷滚条。如果用户滚动了卷滚
条,我们则应当首先将窗口移回原始状态,这就要用到Windows API函数了。因为我们需要确定:卷滚条的滚动范围、滚动块在卷滚条上的当前位置。为
了做到这一点,我们需要使用两个Windows API调用:GetScrollPos和GetScrollRange。 
为了使用这两个API函数,首先在需要使用它们的窗口中将它们声明为local external函数。在Local external函数对话框中,加入如下语句: 
Function int GetScrollPos(uint Handle,int Bar)Library"USER.EXE" 
SubRoutine GetScrollRange(uint Handle,int Bar,Ref int MinPos,RefintMaxPos)Library"USER.EXE"同时在该窗口中声明如下实例变量: 
//判断用户是否要最小化窗口 
Boolean ib_minimized=FALSE 
//判断是否显示卷

你可能感兴趣的:(PowerBuilder,pb,开发语言,powerbuilder)