数据窗口单元格增添光标进入的提示信息tooltip

数据窗口单元格添加光标进入的提示信息tooltip

//全局变量

us_pass ycr_user
n_DB_connectservice db_connect


string gs_name,gs_kcmc,gs_stbh
string gs_zsd[],gs_tx[]
dec gs_txfs[]
time gs_rzsj


String sys_name
//datetime lt_now


//函数内容

/*-----------------------------------------------
函数功能:指定某行某列的属性值(字体、背景颜色等)
/./uf_setcell_tooltip(dw,args_col[],args_info[]) 无返回值
//datawindow dw 

//string args_col[]

//string args_info[]



参数:
dw数据窗口名
args_properties    (text: 改变字体颜色;  background: 背景色) 
args_type        类型(value:指通过值确定行;  row:指通过行号直接确定)
args_col[]      列名或者列号
args_info[]   行号及对应颜色数组


 
  返回值:无


  注: 1. 由于二维数组无法动态声明, 因此用一维数组代替, 通过程序处理。
         因此要求传入到info数组的数据必须是以下格式:
 
    {'行号1','颜色','行号2','颜色'}
 
 2. 目前针对字段中未设表达式的情况。
 
 
 2004-05-14
 1. 实现修改字段中已经设置表达式的情况。
 
----------------------------------------------*/
//参考:"~tcase(getrow() when 1 then ~"hello~" else case(getrow() when 3 then ~"ggg~" else ~"~"))"
//如果未传入值,则返回
IF UpperBound(args_col) <= 0 THEN 
RETURN
END IF


Integer i, j
String ls_colname, ls_properties, ls_old_value = ""
String ls_head, ls_mid, ls_tail, ls_condition
String ls_value, ls_color
//----------2004-05-14
String ls_sign
Boolean lb_sign
//------------------------




FOR i = 1 TO UpperBound( args_col )
//取列号
IF IsNumber( args_col[i] ) THEN
ls_colname = "#" + String( args_col[i] )
ELSE
ls_colname = args_col[i]
END IF

//修改的属性(这里大家可以自己扩展属性)
// CHOOSE CASE args_properties
// CASE "text"
// ls_properties = "color"
//
// CASE "background"
// dw.modify( ls_colname + ".background.mode = '0' " )
// ls_properties = "background.color"
//
// END CHOOSE
dw.modify( ls_colname + ".tooltip.enabled = true " )
dw.modify( ls_colname + ".tooltip.isbubble = '1' " )
// if len(ls_old_value) = 0 then
// dw.modify( ls_colname + ".tooltip.tip = '' " )
// end if
ls_properties = "tooltip.tip"

//去改列的表达式
ls_old_value = dw.Describe( ls_colname + "." + ls_properties )
if ls_old_value = '?' then
ls_old_value = ''
end if
//=========================================================2004-05-14修改
//取出的值中若含有("),就说明有表达式,或者初始值,
//而在重建表达式时,有这两个"在是不行的,所以要去除。
IF Pos(ls_old_value, '"') <> 0 THEN
ls_old_value = Right(ls_old_value, Len(ls_old_value) - Pos(ls_old_value, "~t"))
ls_old_value = Left( ls_old_value, Len(ls_old_value) - Pos(ls_old_value, "~t") - 1 )  //去掉最后的引号
END IF
//=====================================================================
// messagebox("2",ls_old_value)
//根据什么确定行
// CHOOSE CASE args_type
// CASE "value"
// ls_head = "'0~tcase(" + ls_colname +" "
//
// CASE "row"
// ls_head = "'0~tcase(getrow() "
// END CHOOSE
ls_head = "'~tcase(getrow() "

FOR j = 1 TO UpperBound( args_info ) STEP 2
ls_value = args_info[j]//行号或者改单元格的值
ls_color = args_info[j+1]//取颜色

ls_mid = ls_mid + ' when ' + ls_value + ' then "' + ls_color +'"'
NEXT
if len(ls_old_value) = 0 then
ls_tail = ' else "' + ls_old_value + '"'+")'"//结尾
else
ls_tail = " else " + ls_old_value + ")'"//结尾
end if
//组合成表达式中的条件
ls_condition = ls_colname + "." + ls_properties + "="
ls_condition = ls_condition + ls_head + ls_mid + ls_tail
// messagebox("abc",ls_condition)
//执行
dw.Modify( ls_condition )

NEXT