添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

一、滚动条使用4个statictext控件组成。
在这里插入图片描述
二、滚动控制
通过dw的maxPOS ,滑块与滑槽相对的移动,来换算滚动的pos值

long  ll_pos
long  ll_maxpos
ll_maxpos = long(idw_parent.Describe("DataWindow.HorizontalScrollMaximum"))
ll_pos    = ll_maxpos * ( il_vpos - il_minpos ) / ( il_maxpos - il_minpos )
idw_parent.Object.DataWindow.HorizontalScrollPosition = ll_pos

三、滑块的控制,需要用到3个事件

pbm_lbuttondown
pbm_lbuttonup
pbm_mousemove

在这里插入图片描述
还需要一个变量 ib_clicked,来保存鼠标左键状态
鼠标左键按下,ib_clicked=true
鼠标左键弹起,ib_clicked=false
pbm_mousemove事件:
ib_clicked=true时,通过xpos/ypos移动的相对距离,来控制dw的滚动。

long ll_x if ib_clicked = true then ll_x = st_slider.x ll_x += xpos - il_stpos if ll_x < il_minpos then st_slider.x = il_minpos elseif ll_x > il_maxpos then st_slider.x = il_maxpos st_slider.x = ll_x end if il_vpos = st_slider.x post event ue_vscroll() end if

补充四:
滚动条显示和隐藏的自动判断,比如当前dw只有一页内容需要隐藏滚动条。
1、首先在之前创建的自定义对象中创建一个事件,用来判断是否需要显示滚动条,

//水平方向的判断
if long(idw_parent.Describe("DataWindow.VerticalScrollMaximum")) > 0 then
	visible = true
	visible = false
end if

2、然后在DW的自定义事件 pbm_hscroll 和pbm_vscroll 中触发它,这样新增/删除行、拉取数据、过滤数据,都会触发这个事件,这样就实现了自动显示和隐藏滚动条的效果。
在这里插入图片描述

补充五:
鼠标悬停按钮白色效果。
PB是没有鼠标移出控件事件的,因此无法直接实现,鼠标移入移出,按钮变色。
在这里插入图片描述
这里用MFC函数来实现
1、外部函数声明

function ulong SetCapture (ulong hwnd) library "user32.dll"
function boolean ReleaseCapture () library "user32.dll"

2、声明实例变量 boolean ib_MouseCaptured = false
pbm_mousemove 事件:

if not ib_MouseCaptured then
	SetCapture(handle(this))	
	textcolor = color_slider_selected
	ib_MouseCaptured = TRUE
	textcolor = color_slider_bg
	ib_MouseCaptured = false
	ReleaseCapture()
end if
                                    需要对这一列的某些行修改,而某些行不能修改,这就要用到这一列的protect属性了。打开列的属性中的Expressions,在protect中输入条件判别。在数据窗口中如果要使其中一列的属性为只读,也就是不允许用户修改,那么只需简单地将这一列的Table Order 设置成0就可。例如:允许用户修改新增加的记录,而检索出来的记录则不允许修改。这样,DataWindow 中只有新追加的记录可修改,而其他记录是只读的。//  变更记录: 变更或版本更新的时候。//  功能说明:用于冻结左边的滚动栏。
                                    pbDataWindow的打印输出(2)
-PowerBuilder 提 供 了 一 组 打 印 控 制 函 数 来 控 制 要 交 给 打 印 机 打 印的 对 象。 第 一 个 函 数P rintOpen() 在 这 章 的 前 面 我 们 已 介 绍过 了, 其 它 还 有: 
----PrintCancel(print_job_number) 
---- 这个 函 数 将 中 止 打 印 作 业 号 所 打 印 的 作 业, 不 发 送 任 何内 容 给 打 印 机。 
----datawindowcontrol.PrintCancel() 
---- 这个 函 数 与 上 一 函 数 的 区 别 是: 这 个 函 数 取 消 的 是 用Datawindowcontrol.Print() 提 交 的 作 业。 
----PrintClose(print_job_number) 
                                    在Powerbuilder中,当Datawindow所显示的数据超过一个数据窗口时,常常通过单击滚动条控件使Datawindow中的容上下滚动,这样有时带来许多不便,如从某行开始滚动到现在过去了几行或几页,往上或往下滚动几行或几页都不好掌握,Powerbuilder中提供了几种方法可以解决这些问题,例如,按Pageup、Pagedown、↑、↓。这里主要介绍通过定义按钮、使用滚动函数来解...
                                    前面某节里已经说过,PB是基于数据库的开发工具,因此对于与数据相关的操作都非常简单。在其它开发工具中进行数据保存时,一般都要写SQL语句来执行。而在PB中就非常简单了。
1、如果数据窗口中的内容是从单一的表中得来的。那么保存数据只需几行代码:
2、如果表中的数据来源于多个表或表与视图的联合查询等,只对其中的一个或几个表进行保存时,也不是很麻烦,但要简单设置一下。
进入DataWindow
                                    PowerBuilder学习笔记(4)数据窗口(DataWindow)
一.数据窗口对象(Object)与数据窗口控件(Control)
    数据窗口对象是利用PowerBuilder所提供的数据窗口绘图器所产生的对象,可以利用对象管理库(Library Painter)中看到数据窗口对象的存在。
    数据窗口控件是窗口上许多控件中的一种,用来将数据窗口对象的数据显示在窗口控件上面,