| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 1959 人关注过本帖
标题:问个小问题,请教这个怎么解决
取消只看楼主 加入收藏
hytizj023
Rank: 1
等 级:新手上路
帖 子:188
专家分:7
注 册:2023-3-2
收藏
得分:0 
以下是引用laowan001在2023-4-21 07:54:58的发言:



local lsb1,lsb2,lsb3,lsb4,lsb5,lsb6,lsb7,lsb8,lsb9,lsb10
DO 统计
第1句中定义的10个局部变量,在第2句的程序“统计”中是不可用的!就算是同名变量也不是一回事
要养成定义变量及变量作用域的习惯,这样不至于出现一些莫名的问题

建议:“统计”如果只是为了获得某结果,建议写成函数,或者在当前表单做个button当函数用也行

我把local,变成public,结果也是一样
我试了'lsb'+str(i),结果就是输出了,lsb1
2023-04-21 08:38
hytizj023
Rank: 1
等 级:新手上路
帖 子:188
专家分:7
注 册:2023-3-2
收藏
得分:0 
COUNT FOR 路数比='3:0:0' to lsb1
COUNT FOR 路数比='2:1:0' to lsb2
COUNT FOR 路数比='2:0:1' to lsb3
COUNT FOR 路数比='1:2:0' to lsb4
COUNT FOR 路数比='1:1:1' to lsb5
COUNT FOR 路数比='1:0:2' to lsb6
COUNT FOR 路数比='0:3:0' to lsb7
COUNT FOR 路数比='0:2:1' to lsb8
COUNT FOR 路数比='0:1:2' to lsb9
COUNT FOR 路数比='0:0:3' to lsb10
FOR i=1 TO 10
tt=ALLTRIM(STR(i))
thisform.pageframe1.page1.container4.label&tt..Caption=trans(eval('lsb'+ trans(i)))
thisform.pageframe1.page1.container4.label&tt..refresh
IF thisform.pageframe1.page1.container4.label&tt..Caption='0'
thisform.pageframe1.page1.container4.label&tt..visible=.f.
else
thisform.pageframe1.page1.container4.label&tt..visible=.T.
ENDIF
ENDFOR
我查询按钮里面有很多地方要用到这些代码,如果都去写一遍,太长了(这里我只列举了一部分,其实还有很多),也不利于程序的可读性,有没有好的办法
主要是下面这些方法:
FOR i=1 TO 10
tt=ALLTRIM(STR(i))
thisform.pageframe1.page1.container4.label&tt..Caption=trans(eval('lsb'+ trans(i)))
thisform.pageframe1.page1.container4.label&tt..refresh
IF thisform.pageframe1.page1.container4.label&tt..Caption='0'
thisform.pageframe1.page1.container4.label&tt..visible=.f.
else
thisform.pageframe1.page1.container4.label&tt..visible=.T.
ENDIF
ENDFOR
2023-04-21 09:04
hytizj023
Rank: 1
等 级:新手上路
帖 子:188
专家分:7
注 册:2023-3-2
收藏
得分:0 
以下是引用csyx在2023-4-21 09:24:17的发言:

For ii = 1 TO 10
    cNo = Transform(ii)
    With GetPem(thisform.pageframe1.page1.container4, 'Label'+cNo) as Label
        .Caption = Transform(Evaluate('lsb'+cNo))
        .Refresh()
        .Visible = !(.Caption == '0')
    EndWith
EndFor

看不太懂你这个,我大概理解为:和我的程序一样,好像是换了一种写法。不知道能不能这样理解。
我的意思,方法能不能像调用程序一样,do 统计,就完事了,不知道行不行
2023-04-21 10:53
hytizj023
Rank: 1
等 级:新手上路
帖 子:188
专家分:7
注 册:2023-3-2
收藏
得分:0 

FOR i=1 TO 10
tt=ALLTRIM(STR(i))
thisform.pageframe1.page1.container4.label&tt..Caption=trans(eval('lsb'+ trans(i)))
thisform.pageframe1.page1.container4.label&tt..refresh
IF thisform.pageframe1.page1.container4.label&tt..Caption='0'
thisform.pageframe1.page1.container4.label&tt..visible=.f.
else
thisform.pageframe1.page1.container4.label&tt..visible=.T.
ENDIF
根据值给标签换颜色
...............
ENDFOR
我想在加一个操作,就是获取到值大于等于5,显示为蓝色(0,0,255),大于等于10,显示为红色(255,0,0),请教怎么做。
我主要不知道怎么获取变量
我总不能这样写吧
if lsb1>=5
.........
endif
你说的新建方法我得研究一下,应该我能实现
2023-04-21 11:26
hytizj023
Rank: 1
等 级:新手上路
帖 子:188
专家分:7
注 册:2023-3-2
收藏
得分:0 
以下是引用csyx在2023-4-21 12:26:04的发言:

算了,还就你现在的代码改吧
FOR i=1 TO 10
    tt = Ltrim(Str(i))
    nVal = eval('lsb' + trans(i))
    With thisform.pageframe1.page1.container4.label&tt as Label
        .Caption = trans((nVal)
        .refresh()
        .visible = !(.Caption='0')
        .backcolor = Icase(nVal>10,0xff, nVal>5,0xff0000, 0xc0c0c0)    && 根据值改背景色
    EndWith
ENDIF

我已经改好了感谢!
2023-04-21 13:33
快速回复:问个小问题,请教这个怎么解决
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014279 second(s), 9 queries.
Copyright©2004-2025, BC-CN.NET, All Rights Reserved