还有就是,我在做回车事件的时候,sle之间可以用回车事件来触发TAB ORDER跳转的,是不是ddlb就不支持了?
7 个解决方案
#1
ddlb_1.reset()
#2
哦,谢谢“一人”
#3
还有下面那个问题呢?谢谢了
#4
共同关注,我是初学者
#5
1.在数据窗口中进行列的跳转 在用户具体操作时,数据窗口中Enter键的使用频率最高。在设计时,先打开窗口对象,用鼠标点中要用Enter键实现跳转的数据窗口,选择菜单项“Declare|User Event”,为该数据窗口控制定义用户自定义事件。例如有一个窗口,窗口名为w_sales,内置数据窗口dw_sales,数据窗口有五个列,列名分别为column1~column5,定义用户自定义事件为“dw_sales_key”,对应PowerBuilder事件号为pbm_dwnkey。定义好事件后,用鼠标点数据窗口工具栏图标Script,在select event 中选取事件dw_sales_key进行编程,语句如下:
if keydown(keyenter!)then//判断按下的是否是Enter键
choose case 1ower(dw_sales.getcolumnname())
case "column1"
dw_sales.setcolumn("column2")
case "column2"
dw_sales.setcolumn("column3")
case "column3"
dw_sales.setcolumn("column4")
case "column4"
dw_sales.setcolumn("column5")
end choose
end if
编程完后,编译保存,再调用该窗口时,其数据窗口内的列可以用Enter键实现跳转。当然,定义Enter键时最好与Tab键的跳转次序一致。其中Tab键的跳转次序可以通过定义数据窗口菜单栏的“Design|Tab Order”项进行定义。当然,也可以不定义用户自定义事件,而直接在数据窗口的ItemChanged事件下写入如下语句:
int i
i=dw_sales.getcolumn()
if keydown(keyenter!) and i< 6 then
dw_sales.setcolumn(i+1)
end if
也可实现数据列之间的跳转。注意,以上均是基于数据插入状态而言的。而对数据查询就另当别论了,按上面的语句进行编程,在查询时,按回车键,光标会往下跳,而不是按行逐列查询,这主要是系统定义Tab键时,认定回车时列号不变,而行号递变,故用上面的方法会引起错位。若要完全替代Tab键功能,还必须做其它方面的工作。在上面的两种方法中,前者语句太长,而后者必须为当前列值有所改变时,按Enter键才能跳转。为此,可采取另一种方法:定义用户自定义事件,其中事件号为pbm_dwnprocessenter,该事件编程语句为:
int i
i=dw_sales.getcolumn()
dw_sales.setcolumn(i+1)
就可实现跳转功能,同时又避免出现以上问题。
2.窗口中各控件之间的跳转 在窗口中,由于各控件的类型不一样,设置跳转就相对复杂一些。可以通过按Enter键后焦点的移动来设置各控件的跳转。如果各控件是同类型的,情况就好办得多。这里,举一个例子:窗口仍然为w_sales,上面有五个Commandbutton控件,分别为cb_1~cb_5,在窗口事件key中编写以下语句:
graphicobject i
int j=0
i=getfocus()
if keydown(keyenter!)then
if j=1 then
j=0
return
end if
post (handle(I),256,9,0)
j=1
end if
这样,在运行该窗口时,按下Enter键,就可以实现该五个控件之间的跳转。若要在数据窗口中录完最后一个列值,按Enter键跳转到控件上,可以在举的第一个例子中增加以下语句:
case"column5"
setfocus(cb_1)
即可。
if keydown(keyenter!)then//判断按下的是否是Enter键
choose case 1ower(dw_sales.getcolumnname())
case "column1"
dw_sales.setcolumn("column2")
case "column2"
dw_sales.setcolumn("column3")
case "column3"
dw_sales.setcolumn("column4")
case "column4"
dw_sales.setcolumn("column5")
end choose
end if
编程完后,编译保存,再调用该窗口时,其数据窗口内的列可以用Enter键实现跳转。当然,定义Enter键时最好与Tab键的跳转次序一致。其中Tab键的跳转次序可以通过定义数据窗口菜单栏的“Design|Tab Order”项进行定义。当然,也可以不定义用户自定义事件,而直接在数据窗口的ItemChanged事件下写入如下语句:
int i
i=dw_sales.getcolumn()
if keydown(keyenter!) and i< 6 then
dw_sales.setcolumn(i+1)
end if
也可实现数据列之间的跳转。注意,以上均是基于数据插入状态而言的。而对数据查询就另当别论了,按上面的语句进行编程,在查询时,按回车键,光标会往下跳,而不是按行逐列查询,这主要是系统定义Tab键时,认定回车时列号不变,而行号递变,故用上面的方法会引起错位。若要完全替代Tab键功能,还必须做其它方面的工作。在上面的两种方法中,前者语句太长,而后者必须为当前列值有所改变时,按Enter键才能跳转。为此,可采取另一种方法:定义用户自定义事件,其中事件号为pbm_dwnprocessenter,该事件编程语句为:
int i
i=dw_sales.getcolumn()
dw_sales.setcolumn(i+1)
就可实现跳转功能,同时又避免出现以上问题。
2.窗口中各控件之间的跳转 在窗口中,由于各控件的类型不一样,设置跳转就相对复杂一些。可以通过按Enter键后焦点的移动来设置各控件的跳转。如果各控件是同类型的,情况就好办得多。这里,举一个例子:窗口仍然为w_sales,上面有五个Commandbutton控件,分别为cb_1~cb_5,在窗口事件key中编写以下语句:
graphicobject i
int j=0
i=getfocus()
if keydown(keyenter!)then
if j=1 then
j=0
return
end if
post (handle(I),256,9,0)
j=1
end if
这样,在运行该窗口时,按下Enter键,就可以实现该五个控件之间的跳转。若要在数据窗口中录完最后一个列值,按Enter键跳转到控件上,可以在举的第一个例子中增加以下语句:
case"column5"
setfocus(cb_1)
即可。
#6
ddlb_1不能触发TAB ORDER吗?
if keydown(keyenter!)then
post (handle(I),256,9,0)
end if
if keydown(keyenter!)then
post (handle(I),256,9,0)
end if
#7
谢谢上面的各位哦
#1
ddlb_1.reset()
#2
哦,谢谢“一人”
#3
还有下面那个问题呢?谢谢了
#4
共同关注,我是初学者
#5
1.在数据窗口中进行列的跳转 在用户具体操作时,数据窗口中Enter键的使用频率最高。在设计时,先打开窗口对象,用鼠标点中要用Enter键实现跳转的数据窗口,选择菜单项“Declare|User Event”,为该数据窗口控制定义用户自定义事件。例如有一个窗口,窗口名为w_sales,内置数据窗口dw_sales,数据窗口有五个列,列名分别为column1~column5,定义用户自定义事件为“dw_sales_key”,对应PowerBuilder事件号为pbm_dwnkey。定义好事件后,用鼠标点数据窗口工具栏图标Script,在select event 中选取事件dw_sales_key进行编程,语句如下:
if keydown(keyenter!)then//判断按下的是否是Enter键
choose case 1ower(dw_sales.getcolumnname())
case "column1"
dw_sales.setcolumn("column2")
case "column2"
dw_sales.setcolumn("column3")
case "column3"
dw_sales.setcolumn("column4")
case "column4"
dw_sales.setcolumn("column5")
end choose
end if
编程完后,编译保存,再调用该窗口时,其数据窗口内的列可以用Enter键实现跳转。当然,定义Enter键时最好与Tab键的跳转次序一致。其中Tab键的跳转次序可以通过定义数据窗口菜单栏的“Design|Tab Order”项进行定义。当然,也可以不定义用户自定义事件,而直接在数据窗口的ItemChanged事件下写入如下语句:
int i
i=dw_sales.getcolumn()
if keydown(keyenter!) and i< 6 then
dw_sales.setcolumn(i+1)
end if
也可实现数据列之间的跳转。注意,以上均是基于数据插入状态而言的。而对数据查询就另当别论了,按上面的语句进行编程,在查询时,按回车键,光标会往下跳,而不是按行逐列查询,这主要是系统定义Tab键时,认定回车时列号不变,而行号递变,故用上面的方法会引起错位。若要完全替代Tab键功能,还必须做其它方面的工作。在上面的两种方法中,前者语句太长,而后者必须为当前列值有所改变时,按Enter键才能跳转。为此,可采取另一种方法:定义用户自定义事件,其中事件号为pbm_dwnprocessenter,该事件编程语句为:
int i
i=dw_sales.getcolumn()
dw_sales.setcolumn(i+1)
就可实现跳转功能,同时又避免出现以上问题。
2.窗口中各控件之间的跳转 在窗口中,由于各控件的类型不一样,设置跳转就相对复杂一些。可以通过按Enter键后焦点的移动来设置各控件的跳转。如果各控件是同类型的,情况就好办得多。这里,举一个例子:窗口仍然为w_sales,上面有五个Commandbutton控件,分别为cb_1~cb_5,在窗口事件key中编写以下语句:
graphicobject i
int j=0
i=getfocus()
if keydown(keyenter!)then
if j=1 then
j=0
return
end if
post (handle(I),256,9,0)
j=1
end if
这样,在运行该窗口时,按下Enter键,就可以实现该五个控件之间的跳转。若要在数据窗口中录完最后一个列值,按Enter键跳转到控件上,可以在举的第一个例子中增加以下语句:
case"column5"
setfocus(cb_1)
即可。
if keydown(keyenter!)then//判断按下的是否是Enter键
choose case 1ower(dw_sales.getcolumnname())
case "column1"
dw_sales.setcolumn("column2")
case "column2"
dw_sales.setcolumn("column3")
case "column3"
dw_sales.setcolumn("column4")
case "column4"
dw_sales.setcolumn("column5")
end choose
end if
编程完后,编译保存,再调用该窗口时,其数据窗口内的列可以用Enter键实现跳转。当然,定义Enter键时最好与Tab键的跳转次序一致。其中Tab键的跳转次序可以通过定义数据窗口菜单栏的“Design|Tab Order”项进行定义。当然,也可以不定义用户自定义事件,而直接在数据窗口的ItemChanged事件下写入如下语句:
int i
i=dw_sales.getcolumn()
if keydown(keyenter!) and i< 6 then
dw_sales.setcolumn(i+1)
end if
也可实现数据列之间的跳转。注意,以上均是基于数据插入状态而言的。而对数据查询就另当别论了,按上面的语句进行编程,在查询时,按回车键,光标会往下跳,而不是按行逐列查询,这主要是系统定义Tab键时,认定回车时列号不变,而行号递变,故用上面的方法会引起错位。若要完全替代Tab键功能,还必须做其它方面的工作。在上面的两种方法中,前者语句太长,而后者必须为当前列值有所改变时,按Enter键才能跳转。为此,可采取另一种方法:定义用户自定义事件,其中事件号为pbm_dwnprocessenter,该事件编程语句为:
int i
i=dw_sales.getcolumn()
dw_sales.setcolumn(i+1)
就可实现跳转功能,同时又避免出现以上问题。
2.窗口中各控件之间的跳转 在窗口中,由于各控件的类型不一样,设置跳转就相对复杂一些。可以通过按Enter键后焦点的移动来设置各控件的跳转。如果各控件是同类型的,情况就好办得多。这里,举一个例子:窗口仍然为w_sales,上面有五个Commandbutton控件,分别为cb_1~cb_5,在窗口事件key中编写以下语句:
graphicobject i
int j=0
i=getfocus()
if keydown(keyenter!)then
if j=1 then
j=0
return
end if
post (handle(I),256,9,0)
j=1
end if
这样,在运行该窗口时,按下Enter键,就可以实现该五个控件之间的跳转。若要在数据窗口中录完最后一个列值,按Enter键跳转到控件上,可以在举的第一个例子中增加以下语句:
case"column5"
setfocus(cb_1)
即可。
#6
ddlb_1不能触发TAB ORDER吗?
if keydown(keyenter!)then
post (handle(I),256,9,0)
end if
if keydown(keyenter!)then
post (handle(I),256,9,0)
end if
#7
谢谢上面的各位哦