[SIZE=1][SIZE=1][SIZE=2]def var var1 as char no-undo.[/SIZE]
[SIZE=2]def var var2 as char no-undo.[/SIZE]
[SIZE=2]def var var3 as char column-label "Var!3" no-undo.[/SIZE]
[SIZE=2]def var var4 as char no-undo.[/SIZE]
[SIZE=2]def var var5 as char no-undo.[/SIZE]
[SIZE=2]def var var6 as char no-undo.[/SIZE]
[SIZE=2][/SIZE]
[SIZE=2][/SIZE]
[SIZE=2]def temp-table t_wtree[/SIZE]
[SIZE=2]field whandle as widget-handle[/SIZE]
[SIZE=2]field dhandle as char form "x(20)"[/SIZE]
[SIZE=2]field name as char form "x(20)"[/SIZE]
[SIZE=2]field type as char form "x(20)"[/SIZE]
[SIZE=2]field pname as char form "x(20)"[/SIZE]
[SIZE=2]field wframe as char [/SIZE]
[SIZE=2]field wrow as int[/SIZE]
[SIZE=2]field wcol as int[/SIZE]
[SIZE=2]field wvalue as char[/SIZE]
[SIZE=2]field numclabel as int[/SIZE]
[SIZE=2]field slabel as widget-handle[/SIZE]
[SIZE=2]field clabel as widget-handle extent 3[/SIZE]
[SIZE=2]index idx1 wframe name wrow wcol[/SIZE]
[SIZE=2]index idx2 whandle.[/SIZE]
[SIZE=2]def buffer b_wtree for t_wtree.[/SIZE]
[SIZE=2]form var1 var2 var3 with frame f1 width 80.[/SIZE]
[SIZE=2]form var4 var5 var6 with frame f2 width 80 side-labels.[/SIZE]
[SIZE=2]form var4 column-label "1!2!3" var5 column-label "1!2!3" var6 column-label "1!2!3" with frame f3 width 80 no-underline.[/SIZE]
[SIZE=2]run p_walkwidgettree (frame f1:handle).[/SIZE]
[SIZE=2]run p_walkwidgettree (frame f2:handle).[/SIZE]
[SIZE=2]run p_walkwidgettree (frame f3:handle).[/SIZE]
[SIZE=2][/SIZE]
[SIZE=2]run p_modify_frame (frame f1:handle).[/SIZE]
[SIZE=2]run p_modify_frame (frame f2:handle).[/SIZE]
[SIZE=2]run p_modify_frame (frame f3:handle).[/SIZE]
[SIZE=2][/SIZE]
[SIZE=2]run p_modify_field (var1:handle in frame f1).[/SIZE]
[SIZE=2]run p_modify_field (var4:handle in frame f2).[/SIZE]
[SIZE=2]for each t_wtree use-index idx1:[/SIZE]
[SIZE=2]display t_wtree except t_wtree.whandle t_wtree.clabel t_wtree.slabel.[/SIZE]
[SIZE=2]if valid-handle (t_wtree.clabel[1]) then display t_wtree.clabel[1]:screen-value.[/SIZE]
[SIZE=2]if valid-handle (t_wtree.clabel[2]) then display t_wtree.clabel[2]:screen-value.[/SIZE]
[SIZE=2]if valid-handle (t_wtree.clabel[3]) then display t_wtree.clabel[3]:screen-value.[/SIZE]
[SIZE=2]end.[/SIZE]
[SIZE=2][/SIZE]
[SIZE=2]run p_set_data ("f1", "f1", "title", "Frame 1").[/SIZE]
[SIZE=2]run p_set_data ("f2", "f2", "title", "Frame 2").[/SIZE]
[SIZE=2][/SIZE]
[SIZE=2]run p_set_data ("f1", "var1", "screen-value", "1-2-3").[/SIZE]
[SIZE=2]run p_set_data ("f1", "var3", "screen-value", "4-5-6").[/SIZE]
[SIZE=2]run p_set_data ("f1", "var3", "columnlabel[1]", "V").[/SIZE]
[SIZE=2]run p_set_data ("f1", "var3", "columnlabelcol[1]", "40").[/SIZE]
[SIZE=2]run p_set_data ("f1", "var3", "columnlabel[2]", "Three").[/SIZE]
[SIZE=2]run p_set_data ("f1", "var3", "columnlabelcol[2]", "40").[/SIZE]
[SIZE=2]run p_set_data ("f1", "var3", "col", "40").[/SIZE]
[SIZE=2]run p_set_data ("f1", "var2", "sensitive", "yes").[/SIZE]
[SIZE=2]run p_set_data ("f2", "var4", "sidelabel", "V4").[/SIZE]
[SIZE=2]run p_set_data ("f2", "var6", "hidden", "yes").[/SIZE]
[SIZE=2]run p_set_data ("f2", "var6", "visible", "no").[/SIZE]
[SIZE=2]run p_set_data ("f3", "var4", "columnlabel[1]", "Var").[/SIZE]
[SIZE=2]run p_set_data ("f3", "var4", "columnlabel[2]", "4").[/SIZE]
[SIZE=2]run p_set_data ("f3", "var4", "columnlabel[3]", "________").[/SIZE]
[SIZE=2]run p_set_data ("f3", "var5", "columnlabel[1]", "Var").[/SIZE]
[SIZE=2]run p_set_data ("f3", "var5", "columnlabel[2]", "5").[/SIZE]
[SIZE=2]run p_set_data ("f3", "var5", "columnlabel[3]", "________").[/SIZE]
[SIZE=2]run p_set_data ("f3", "var6", "columnlabel[1]", "Var").[/SIZE]
[SIZE=2]run p_set_data ("f3", "var6", "columnlabel[2]", "6").[/SIZE]
[SIZE=2]run p_set_data ("f3", "var6", "columnlabel[3]", "________").[/SIZE]
[SIZE=2][/SIZE]
[SIZE=2][/SIZE]
[SIZE=2][/SIZE]
[SIZE=2][/SIZE]
[SIZE=2][/SIZE]
[SIZE=2]wait-for window-close of this-procedure.[/SIZE]
[SIZE=2]procedure p_modify_frame:[/SIZE]
[SIZE=2]def input param inp_handle as widget-handle.[/SIZE]
[SIZE=2]/* message inp_handle:name inp_handle:visible view-as alert-box.*/[/SIZE]
[SIZE=2]inp_handle:title = inp_handle:name.[/SIZE]
[SIZE=2]inp_handle:visible = yes.[/SIZE]
[SIZE=2][/SIZE]
[SIZE=2]end procedure.[/SIZE]
[SIZE=2]procedure p_modify_field:[/SIZE]
[SIZE=2]def input param inp_handle as widget-handle.[/SIZE]
[SIZE=2]if not valid-handle (inp_handle) then return.[/SIZE]
[SIZE=2]/* message inp_handle:sensitive inp_handle:visible view-as alert-box. */[/SIZE]
[SIZE=2]inp_handle:sensitive = yes.[/SIZE]
[SIZE=2]end procedure.[/SIZE]
[SIZE=2][/SIZE]
[SIZE=2]procedure p_walkwidgettree:[/SIZE]
[SIZE=2]def input param inp_handle as widget-handle.[/SIZE]
[SIZE=2]def var h_frameset as widget-handle no-undo.[/SIZE]
[SIZE=2]def var h_item as widget-handle no-undo.[/SIZE]
[SIZE=2]def var wtcount as int no-undo.[/SIZE]
[SIZE=2][/SIZE]
[SIZE=2]create t_wtree.[/SIZE]
[SIZE=2]t_wtree.whandle = inp_handle.[/SIZE]
[SIZE=2]t_wtree.dhandle = string (inp_handle).[/SIZE]
[SIZE=2]t_wtree.name = inp_handle:name.[/SIZE]
[SIZE=2]t_wtree.wvalue = inp_handle:screen-value no-error.[/SIZE]
[SIZE=2]t_wtree.type = inp_handle:type.[/SIZE]
[SIZE=2]t_wtree.wrow = inp_handle:row.[/SIZE]
[SIZE=2]t_wtree.wcol = inp_handle:col.[/SIZE]
[SIZE=2]t_wtree.wframe = inp_handle:name.[/SIZE]
[SIZE=2][/SIZE]
[SIZE=2][/SIZE]
[SIZE=2]repeat:[/SIZE]
[SIZE=2]if not valid-handle (h_frameset) then h_frameset = inp_handle:first-child.[/SIZE]
[SIZE=2]else h_frameset = h_frameset:next-sibling.[/SIZE]
[SIZE=2]if not valid-handle (h_frameset) then leave.[/SIZE]
[SIZE=2][/SIZE]
[SIZE=2]wtcount = wtcount + 1.[/SIZE]
[SIZE=2][/SIZE]
[SIZE=2]h_item = h_frameset:first-child. [/SIZE]
[SIZE=2]repeat:[/SIZE]
[SIZE=2]if not valid-handle (h_item) then leave.[/SIZE]
[SIZE=2]create t_wtree.[/SIZE]
[SIZE=2]t_wtree.whandle = h_item.[/SIZE]
[SIZE=2]t_wtree.dhandle = string (h_item).[/SIZE]
[SIZE=2]t_wtree.name = h_item:name.[/SIZE]
[SIZE=2]t_wtree.wvalue = h_item:screen-value.[/SIZE]
[SIZE=2]t_wtree.type = h_item:type.[/SIZE]
[SIZE=2]t_wtree.pname = string (wtcount).[/SIZE]
[SIZE=2]t_wtree.wrow = h_item:row.[/SIZE]
[SIZE=2]t_wtree.wcol = h_item:col.[/SIZE]
[SIZE=2]t_wtree.wframe = inp_handle:name.[/SIZE]
[SIZE=2][/SIZE]
[SIZE=2]h_item = h_item:next-sibling.[/SIZE]
[SIZE=2]end.[/SIZE]
[SIZE=2][/SIZE]
[SIZE=2]end. [/SIZE]
[SIZE=2]for each t_wtree where t_wtree.wframe = inp_handle:name and t_wtree.pname = "1":[/SIZE]
[SIZE=2]if inp_handle:side-labels then t_wtree.slabel = t_wtree.whandle:side-label-handle.[/SIZE]
[SIZE=2]else for each b_wtree where[/SIZE]
[SIZE=2]b_wtree.wframe = t_wtree.wframe and[/SIZE]
[SIZE=2]b_wtree.wcol = t_wtree.wcol and[/SIZE]
[SIZE=2]b_wtree.type = "literal" break by b_wtree.wrow:[/SIZE]
[SIZE=2]t_wtree.numclabel = t_wtree.numclabel + 1.[/SIZE]
[SIZE=2]if t_wtree.numclabel <= extent (t_wtree.clabel) then[/SIZE]
[SIZE=2]t_wtree.clabel [t_wtree.numclabel] = b_wtree.whandle.[/SIZE]
[SIZE=2]end.[/SIZE]
[SIZE=2][/SIZE]
[SIZE=2]end.[/SIZE]
[SIZE=2][/SIZE]
[SIZE=2]end procedure.[/SIZE]
[SIZE=2]procedure p_set_data:[/SIZE]
[SIZE=2]def input param inp_frame as char no-undo.[/SIZE]
[SIZE=2]def input param inp_name as char no-undo.[/SIZE]
[SIZE=2]def input param inp_setting as char no-undo.[/SIZE]
[SIZE=2]def input param inp_value as char no-undo.[/SIZE]
[SIZE=2]find first t_wtree where[/SIZE]
[SIZE=2]t_wtree.wframe = inp_frame and[/SIZE]
[SIZE=2]t_wtree.name = inp_name[/SIZE]
[SIZE=2]no-lock no-error.[/SIZE]
[SIZE=2][/SIZE]
[SIZE=2]if not available t_wtree then return.[/SIZE]
[SIZE=2][/SIZE]
[SIZE=2]case inp_setting:[/SIZE]
[SIZE=2]when "sensitive" then t_wtree.whandle:sensitive = (if inp_value = "yes" then yes else no).[/SIZE]
[SIZE=2]when "visible" then t_wtree.whandle:visible = (if inp_value = "yes" then yes else no).[/SIZE]
[SIZE=2]when "hidden" then t_wtree.whandle:hidden = (if inp_value = "yes" then yes else no).[/SIZE]
[SIZE=2]when "screen-value" then t_wtree.whandle:screen-value = inp_value.[/SIZE]
[SIZE=2]when "row" then t_wtree.whandle:row = decimal(inp_value) no-error.[/SIZE]
[SIZE=2]when "col" then t_wtree.whandle:col = decimal(inp_value) no-error.[/SIZE]
[SIZE=2]when "sidelabel" then if valid-handle (t_wtree.slabel) then t_wtree.slabel:screen-value = inp_value.[/SIZE]
[SIZE=2][/SIZE]
[SIZE=2]when "columnlabel[1]" then if valid-handle (t_wtree.clabel [1]) then t_wtree.clabel [1]:screen-value = inp_value.[/SIZE]
[SIZE=2]when "columnlabelrow[1]" then if valid-handle (t_wtree.clabel [1]) then t_wtree.clabel [1]:row = decimal (inp_value) no-error.[/SIZE]
[SIZE=2]when "columnlabelcol[1]" then if valid-handle (t_wtree.clabel [1]) then t_wtree.clabel [1]:col = decimal (inp_value) no-error.[/SIZE]
[SIZE=2]when "columnlabel[2]" then if valid-handle (t_wtree.clabel [2]) then t_wtree.clabel [2]:screen-value = inp_value.[/SIZE]
[SIZE=2]when "columnlabelrow[2]" then if valid-handle (t_wtree.clabel [2]) then t_wtree.clabel [2]:row = decimal (inp_value) no-error.[/SIZE]
[SIZE=2]when "columnlabelcol[2]" then if valid-handle (t_wtree.clabel [2]) then t_wtree.clabel [2]:col = decimal (inp_value) no-error.[/SIZE]
[SIZE=2]when "columnlabel[3]" then if valid-handle (t_wtree.clabel [3]) then t_wtree.clabel [3]:screen-value = inp_value.[/SIZE]
[SIZE=2]when "columnlabelrow[3]" then if valid-handle (t_wtree.clabel [3]) then t_wtree.clabel [3]:row = decimal (inp_value) no-error.[/SIZE]
[SIZE=2]when "columnlabelcol[3]" then if valid-handle (t_wtree.clabel [3]) then t_wtree.clabel [3]:col = decimal (inp_value) no-error.[/SIZE]
[SIZE=2]when "title" then t_wtree.whandle:title = inp_value no-error.[/SIZE]
[SIZE=2][/SIZE]
[SIZE=2]end case. [/SIZE]
[SIZE=2]end procedure.[/SIZE]
[SIZE=2][/SIZE]
[/SIZE][/SIZE]