2017-04-10 91 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