2017-04-10 104 views
0

我有更多的行。我想为状态为AA1的行保护列,并且对于状态不同于AA1的行,同一列不受保护。 所以我写了这一点:Powerbuilder修改行列

ll_count = dw_list.RowCount() 
    if ll_count > 0 then 
    for i = 1 to ll_count 
      if dw_list.object.status[i] = 'AA1' then 
       dw_list.modify("f_change[i].Protect='1") 
       //dw_list.Object.f_change[i].modify("f_change[i].Protect='1") 
       dw_list.Object.f_change[i].Background.Color = gf_get_btnface() 
      end if 
      if dw_list.object.status[i] <> 'AA1' then    
       dw_list.modify("f_change[i].Protect='0'")   
      end if 
    next 
    end if 

dw_list.modify("f_change[i].Protect='1'")是不正确的。 dw_list.Object.f_change[i].modify("f_change[i].Protect='1")。 如果我只写dw_list.modify("f_change.Protect='1'")它修改所有的行。

+0

当您显示数据行并希望根据行/列中的数据为这些行中的条目指定不同的属性时,数据窗口表达式通常是最佳方式。 –

回答

0

我会这样做,而不编程一行,但通过编辑数据窗口设计。

  1. 在设计模式打开
  2. 数据窗口中选择所需的列
  3. 在“常规”选项卡上,单击小图标附近的“保护”。
  4. 插入那里condiction保护或没有该列:if(status = 'AA1', '0', '1')

完成了所有的数据。
相同的过程可以应用于数据窗口列的许多特征(颜色,背景颜色,可见,指针,位置等) 或者,您可以通过编程方式来放置条件,但是我只会在需要时执行此操作即时改变保护方案。无论如何,原则是设置列本身的保护条件。 一般来说,尽可能在PowerBuilder中尽可能不用脚本编程。 U

+0

只需添加,重要的是要明白像Protect这样的属性不能在逐行的基础上进行操作。 Modify()操作DW的模板,因此它会影响所有行。 DW的属性支持表达式的时候,你需要的力量就是这样,而大部分都是这样。 – Terry