hur.cn - 华软网

 热门搜索

提两个简单问题!

  作者:未知    来源:网络    更新时间:2017/9/29
1、如何把焦点直接设置到FREEFORM数据窗口的某个字段中,如#2,#3等
2、如何选择多行GRID数据
------华软网友回答------
setcolumn()
selectrow(row,true)
------华软网友回复------
这么简单呀
------华软网友回复------
gz
------华软网友回复------
dw.setcolumn(#2)

------华软网友回复------
第二问题我来解答:
数据窗口控件dw_control中的点击clicked事件:

//以下程序用于数据窗口的多行选中操作
long l_currentrow
long l_j

if row = 0 then 
return 
else
l_currentrow = row //当前鼠标点中行
end if

if keydown(keyshift!) then  //按下Shift键
if l_lastrow = 0 then
this.selectrow(l_currentrow,true)
l_lastrow = l_currentrow
else
this.selectrow(0,false)
if l_currentrow > l_lastrow then
for l_j = l_lastrow to l_currentrow
this.selectrow(l_j,true)
next
else
for l_j=l_lastrow to l_currentrow step -1
this.selectrow(l_j,true)
next
end if
end if
else
l_lastrow = l_currentrow
if keydown(keycontrol!) then  //按下Ctrl键
if this.isselected(l_currentrow) then
this.selectrow(l_currentrow,false)
else
this.selectrow(l_currentrow,true)
end if
else  //无功能键按下
this.selectrow(0,false)
end if
end if

一般选择多行后会进行“删除”功能,该功能脚本在数据窗口控件的deleterow函数中脚本如下:
//此函数用于删除数据窗口中所有选中的行,代码如下:

long l_count , l_j

l_count = this.rowcount()
if l_count <> 0 then
for l_j = l_count to 0 step -1
if this.isselected(l_j) then
this.deleterow(l_j)
end if
end for
end if
该脚本把数据窗口主缓冲区中的选中数据移动到删除缓冲区中,并没有在数据库中删除相应的数据行,如果想同时删除数据库中的数据,则需要添加this.update()函数,并判断其返回值。然后根据其返回值1:COMMIT USING SQLCA;0:ROLLBACK USING SQLCA;
------华软网友回复------
第一问题我补充一下哦!
数据窗口控件的setcolumn()函数
功能设置指定列为数据窗口控件的当前列
语法dwcontrol.SetColumn ( column )
参数dwcontrol 数据窗口控件名
column 指定新的当前列column 参数可以使用列名string 类型也可以使
用列号integer 类型
返回值Integer 函数执行成功时返回1 发生错误时返回-1 如果任何参数的值为
NULL 则SetColumn()函数返回NULL 如果列号小于1 或大于数据窗口中列的总数则
SetColumn()函数执行失败
用法执行SetColumn()函数后光标移动到当前列上但并不左右滚动数据窗口
只有可编辑列才能成为当前列跳转次序号Tab Order 大于0 的列才是可编辑列

示例下面的代码将数据窗口控件dw_Employee 的当前列设置为第15 列
dw_1.setcolumn(15)

------华软网友回复------
UP      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。