如何快速生成具有一定规律的多行字符串

      假设有这么一个工程,需要在数据窗口中,新建 150 × 150 个文本框, 效果图如下:

效果图

 

      这个时候,我们可以使用传统的方法,即双循环来建立 modify 语句,代码如下:

      这个代码是很好理解的,由上及下,从左到右,依次生成22500行create text 语句,但是这样的效率是很头疼的,整个代码的运行时间大约需要230秒(电脑配置不同,时间不同),也就是说需要大约4分钟的等待时间,才能绘出上图,这显然是不可接受的。

 

      对于这个工程,我们可以清晰的看到,它是有规律的,每个文本框无论是左右还是上下,间距都是很有规律的,这种间距规律可以通过数据窗口中的每一行数据的 getrow() 值的不同来构建。再看看最终要生成的modify语句:“22500行create text 语句”,回想平时通过object.datawindow.data语句取出来的数据串的格式:“每一行数据就是一行字符串”。把这些思路串联在一起,不免要蹦出以数据窗口来解决问题的想法。

 

      首先,建立数据窗口对象 d_d : d_d 中包含4个long型数据列x、y、w、h,分别表示要create到dw_1中的text对象的x、y、width、height;同时包含两个计算列com和s_create,com是用来进行赋值的,表达式随便填,s_create用来存create语句的,表达式为:'create text(band=detail alignment="0" text="" border="2" color="33554432" x="' + string(x) + '" y="' + string(y) + '" height="' + string(w) + '" width="' + string(h) + '" html.valueishtml="0" name=t_l' + string(getrow()) + ' visible="1" font.face="Arial" font.height="-12" font.weight="400" font.family="1" font.pitch="2" font.charset="0" background.mode="1" background.color="536870912" )'


      其次,建立数据窗口对象 d_c : d_c 中仅包含1个char(4000)的数据列s_create,用来存储 d_d 中的计算列s_create

 

      接着,建立数据窗口对象 d_s : freeform 类型, 用来显示最终的效果图。

 

      做了这些前期准备后,既可以开始实行我们想要的功能了, 新增窗口,插入数据窗口,设置dataobject 为 d_s ; 插入一个按钮,在按钮的 clicked 事件写如下代码:

 

      代码中的 wf_insertrow(lds_s, ll_c * ll_k) 函数,可以参考我写的另一篇博文:pb数据窗口快速插入空行的方法

 

      运行代码试试效果吧,用时大约2秒,效率是不是有了大幅提高!所耗费的2秒主要用在 modify 语句上, 这方面暂时没有找到提高效率的方法。

 

      也许我所举例的这个工程在实际开发项目上,使用意义不大,但是在日后开发过程中,对于需要通过多重循环构建的字符串,可以按照代码所提供的思路来进行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值