请教高手一个问题

时间:2022-11-28 18:54:13
我在datawindow里填了几个text object,并且编程使这几个text object在程序运行时
动态的改变它所显示的text.我所编的程序是一个循环语句,我想将这几个text的名字
设成变量,以便在满足不同条件时,给变量赋值,使其指向指定的text.请问我怎么才能
实现.谢谢
 

16 个解决方案

#1


string ls_text
ls_text='t_1'             //设置TEXT名称
dw_1.modify("'"+ls_text+"'"+'.text=需要TEXT显示的值')
注意要把变量传给MODIFY时要在变量两边加上'号,直接加不行,须用""号将'号括起来。
不知能不能帮你解决问题。希望你好运!

#2


谢谢你,gwolfupb(括弧)我去试试

#3


我的问题还没有解决.我想实现的是:如果满足条件1,t_1.text='a',如果满足条件2,t_2.text='a',以此类推,我怎么实现这个循环,其中text的名字我想是应该成变量

#4


把上面的改一改就可以了吧:
string ls_text
ls_text = 't_'
...yourcaseno根据你的条件获得,如条件2的话yourcaseno就是2
dw_1.modify("'" + ls_text + yourcaseno + "'" + ".text = value ")

#5


  thank you benjialiu I will try

#6


我现在还有两个问题:
(1)我在设置modify函数时出了问题
例如:string ls_text,cond,data
      ls_text='text_'
      cond='1'
      data=...//一个字符串变量
dw_2.modify("'"+ ls_text + cond + "'" + ".text = ~"" + data2 + "~"")
     可是出不来效果,于是我又换了以下做法
dw_2.modify("text_1.text=~"" + data2 + "~"")
     这样就出来效果了.请问我在设置的时候出了什么错误.
(2)我想使cond的字符串的值进行加法运算(自动加1),我这样设计的
 long j
   j=long(cond)
   j=j+1
   cond=string(j)
不知道我这样设计的对不对,我觉得long(cond)后好像不是1了,如果不对请问怎样能实现

#7


如果你的条件全部跟数据窗口里的数据有关的话,不如用计算列来替代文本框:
case( ... 
   when ... then
      ...
   when ...then
      ...
   else
     ...
)
既方便又好用,还不容易出错。

#8


我的条件不是跟数据有关,相当于c里的循环,又一个变量总是自动加1

#9


其实你的字符串加法只要一句话就可以了:
cond = string(long(cond) +1)
另外,关于循环:
for li_index = 1 to li_count

  ls_text_name = 'text_'+string(li_index)
  dw_xxx.modify(ls_text_name+'.text="'+string(li_index)+'"')
end for
// 上述语句就可以实现对text_1 - text_10自动赋值为1-10

#10


请问高手们,我又该如何实现以下情况:
        sle_1.setfocus() ,sle_2.setfocus() ... sle_*.setfocus()
或如:  cb_1.visible = false, cb_2.visible = false, ... cb_*.visible = false

用 modify() 可以吗?  请多多赐教!

#11


把你的这些控件全部放入一个External+FreeForm风格的数据窗口,SetFocus可以用SetColumn来实现,Visible可以用Modify

#12


感谢流方liulee以及上面所有帮我解决问题的朋友,我的问题解决了

#13


up

#14


关注!

#15


up

#16


no problem

#1


string ls_text
ls_text='t_1'             //设置TEXT名称
dw_1.modify("'"+ls_text+"'"+'.text=需要TEXT显示的值')
注意要把变量传给MODIFY时要在变量两边加上'号,直接加不行,须用""号将'号括起来。
不知能不能帮你解决问题。希望你好运!

#2


谢谢你,gwolfupb(括弧)我去试试

#3


我的问题还没有解决.我想实现的是:如果满足条件1,t_1.text='a',如果满足条件2,t_2.text='a',以此类推,我怎么实现这个循环,其中text的名字我想是应该成变量

#4


把上面的改一改就可以了吧:
string ls_text
ls_text = 't_'
...yourcaseno根据你的条件获得,如条件2的话yourcaseno就是2
dw_1.modify("'" + ls_text + yourcaseno + "'" + ".text = value ")

#5


  thank you benjialiu I will try

#6


我现在还有两个问题:
(1)我在设置modify函数时出了问题
例如:string ls_text,cond,data
      ls_text='text_'
      cond='1'
      data=...//一个字符串变量
dw_2.modify("'"+ ls_text + cond + "'" + ".text = ~"" + data2 + "~"")
     可是出不来效果,于是我又换了以下做法
dw_2.modify("text_1.text=~"" + data2 + "~"")
     这样就出来效果了.请问我在设置的时候出了什么错误.
(2)我想使cond的字符串的值进行加法运算(自动加1),我这样设计的
 long j
   j=long(cond)
   j=j+1
   cond=string(j)
不知道我这样设计的对不对,我觉得long(cond)后好像不是1了,如果不对请问怎样能实现

#7


如果你的条件全部跟数据窗口里的数据有关的话,不如用计算列来替代文本框:
case( ... 
   when ... then
      ...
   when ...then
      ...
   else
     ...
)
既方便又好用,还不容易出错。

#8


我的条件不是跟数据有关,相当于c里的循环,又一个变量总是自动加1

#9


其实你的字符串加法只要一句话就可以了:
cond = string(long(cond) +1)
另外,关于循环:
for li_index = 1 to li_count

  ls_text_name = 'text_'+string(li_index)
  dw_xxx.modify(ls_text_name+'.text="'+string(li_index)+'"')
end for
// 上述语句就可以实现对text_1 - text_10自动赋值为1-10

#10


请问高手们,我又该如何实现以下情况:
        sle_1.setfocus() ,sle_2.setfocus() ... sle_*.setfocus()
或如:  cb_1.visible = false, cb_2.visible = false, ... cb_*.visible = false

用 modify() 可以吗?  请多多赐教!

#11


把你的这些控件全部放入一个External+FreeForm风格的数据窗口,SetFocus可以用SetColumn来实现,Visible可以用Modify

#12


感谢流方liulee以及上面所有帮我解决问题的朋友,我的问题解决了

#13


up

#14


关注!

#15


up

#16


no problem