$PBExportHeader$w_key_value_edit.srw forward global type w_key_value_edit from window end type type cb_2 from commandbutton within w_key_value_edit end type type cb_1 from commandbutton within w_key_value_edit end type type dw_1 from datawindow within w_key_value_edit end type end forward global type w_key_value_edit from window integer width = 1129 integer height = 1092 boolean titlebar = true string title = "键-值" windowtype windowtype = response! long backcolor = 67108864 string icon = "AppIcon!" boolean center = true event ue_retrieve_keys ( ) cb_2 cb_2 cb_1 cb_1 dw_1 dw_1 end type global w_key_value_edit w_key_value_edit type variables uo_keyvaluecollection ins_keyvalues string ins_rslt end variables event ue_retrieve_keys();datawindowchild dwc Long row, i, j String Values[], ls_value uo_strhelper uo_str uo_str = Create uo_strhelper IF dw_1.GetChild('lvalue', Ref dwc) = 1 THEN dwc.Reset() j = dw_1.GetRow() IF j > 0 THEN ls_value = ins_keyvalues.uf_getvalue(dw_1.Object.lkey[j]) uo_str.split(ls_value, ",", Values) row = dwc.InsertRow(0) dwc.SetItem(row, 1, "") FOR i = 1 To UpperBound(Values) IF Values[i] = '' THEN CONTINUE row = dwc.InsertRow(0) dwc.SetItem(row, 1, Values[i]) NEXT END IF END IF Destroy uo_str end event on w_key_value_edit.create this.cb_2=create cb_2 this.cb_1=create cb_1 this.dw_1=create dw_1 this.Control[]={this.cb_2,& this.cb_1,& this.dw_1} end on on w_key_value_edit.destroy destroy(this.cb_2) destroy(this.cb_1) destroy(this.dw_1) end on event open;String ins_allpros = "A:1,2,3;B:2,3,4;" String ins_curpros = "A:2;B:3" String parms[], parm[] Long i, row s_key_value_parm s_win s_win = message.powerobjectparm ins_allpros = s_win.allprops ins_curpros = s_win.curprops ins_keyvalues = Create uo_keyvaluecollection SetNull(ins_rslt) uo_keyvaluecollection lo_curpros lo_curpros = Create uo_keyvaluecollection uo_strhelper uo_str uo_str = Create uo_strhelper uo_str.split(ins_curpros, ";", parms) FOR i = 1 To UpperBound(parms) uo_str.split(parms[i], ":", parm) IF parm[1] <> '' And UpperBound(parm) > 1 THEN lo_curpros.uf_add(parm[1], parm[2]) END IF NEXT uo_str.split(ins_allpros, ";", parms) FOR i = 1 To UpperBound(parms) uo_str.split(parms[i], ":", parm) IF parm[1] <> '' And UpperBound(parm) > 1 THEN ins_keyvalues.uf_add(parm[1], parm[2]) row = dw_1.InsertRow(0) dw_1.Object.lkey[row] = parm[1] IF lo_curpros.uf_haskey(parm[1]) THEN dw_1.Object.lvalue[row] = lo_curpros.uf_getvalue(parm[1]) END IF END IF NEXT TriggerEvent('ue_retrieve_keys') Destroy uo_str Destroy lo_curpros end event event close;CloseWithReturn(This, ins_rslt) end event type cb_2 from commandbutton within w_key_value_edit integer x = 795 integer y = 896 integer width = 288 integer height = 108 integer taborder = 30 integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" string text = "取消" end type event clicked;close(parent) end event type cb_1 from commandbutton within w_key_value_edit integer x = 498 integer y = 896 integer width = 288 integer height = 108 integer taborder = 20 integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" string text = "确定" end type event clicked;dw_1.AcceptText() Long i ins_rslt = '' FOR i = 1 To dw_1.RowCount() IF dw_1.Object.lvalue[i] <> '' THEN ins_rslt += dw_1.Object.lkey[i] + ":" + dw_1.Object.lvalue[i] + ";" END IF NEXT Close(Parent) end event type dw_1 from datawindow within w_key_value_edit integer width = 1115 integer height = 884 integer taborder = 10 string title = "none" string dataobject = "dw_key_value_edit" boolean hscrollbar = true boolean vscrollbar = true boolean livescroll = true borderstyle borderstyle = stylelowered! end type event clicked;This.SelectRow(0, False) IF row > 0 THEN This.SetRow(row) END IF end event event rowfocuschanged;IF currentrow > 0 THEN This.SelectRow(currentrow, True) END IF parent.triggerevent('ue_retrieve_keys') end event