Search code examples
rowpowerbuilderprotected

Powerbuilder modify row columns


I have more rows. And i want for the rows with status AA1 a column protected and for the rows with status different than AA1 the same column unprotected. So I wrote this:

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

But dw_list.modify("f_change[i].Protect='1'") is not correct. Neither dw_list.Object.f_change[i].modify("f_change[i].Protect='1"). If I just write dw_list.modify("f_change.Protect='1'") it modifies all the rows.


Solution

  • I woud do this without programming a single line, but by editing the datawindow design.

    1. Open the datawindow in design mode
    2. Select the desired column
    3. In the 'General' tab, click on the small icon nearby 'Protect'.
    4. Insert there the condiction to protect or not that column: if( status = 'AA1', '0', '1')

    Done for all your data.
    The same process can be applied to many characteristics of data window columns (color, background color, visible, pointer, position,...) Alternatively, you could put the condition programmatically, but I would only do it if you need to change the protection scheme 'on the fly'. Anyway, the principle is to set the protect condition on the column itself. Generally speaking, try to do in PowerBuilder as much as you can WITHOUT script programming. U