use"lang.vl"
use "win.vl"
use "dev:vm[xml.vm]"
use "treeview.vm"
use "dev:vm[xaserverarg.vm]"
use "dev:vm[xaserver.vm]"
use "dev:vm[xdwgrid.vm]"
use "dev:vm[xdwtable.vm]"
use "dev:vm[xutil.vm]"
use "file.vl"
use "list.vl"
unit vbusiness.vpage
[
QuickCode_Tree is extend list;
about QuickCode_Tree
[
field:
method:
[
xdwgrid__ dw_list;
treeview__ tv_1;
string m_config;
string m_agent;
string m_id;
string m_dbmap;
string treexquery;
string c_type;
msxml::IXMLDOMDocument m_configDoc;
string kpstr;
string strtpl;
string m_QueryTxt;
int alert(string str)
{
TApp::alert(this,str);
//win__::MessageBox(this.GetHWND(),str,"Ìáʾ:",0);
return 0;
}
int SetAgent()
{
string xfNodeAgentArea = "agentarea";
xnode__ anode = new xnode__;
anode.setNativePointer(GetAgentNode(xfNodeAgentArea));
var xframeElement = win__::GetElement();
var agent = xframeElement.selectSingleNode("agent/"+xfNodeAgentArea+"[1]");
if(agent)
{
string s = agent.xml+"";
SetAgentNodeContent (anode,s);
}
return 1;
}
int OnRetrieve()
{
dw_list.AcceptText();
xml__ x=new xml__;
x.setNativePointer(xml__::CreateInstance());
xaserverarg__ arg=new xaserverarg__;
arg.setNativePointer(arg.CreateInstance());
arg.AddArg("id",m_id);
arg.AddArg("sType",c_type);
arg.AddArg("QueryTxt", m_QueryTxt );
//trace(arg.GetString());
/*if (TDataSet::exec(m_config, "query1", arg.GetString(),x) != 1)
{
trace(x.GetXmlDoc().text);
return -1;
}*/
if (url::get("QuickCode/entity/listaddtree",arg.GetString(),x) != 1)
{
trace(x.GetXmlDoc().text);
return -1;
}
//trace(x.GetXml());
if(x.GetXml()=="")
{
xml__ xx=new xml__;
xx.setNativePointer(xml__::CreateInstance());
xx.LoadXml("");
dw_list.Retrieve(xx);
dw_list.Redraw();
}
else
{
dw_list.Retrieve(x);
dw_list.Redraw();
}
return 1;
}
int OnTreeSelChanged(ref TNotifyEvent evt,int p)
{
ref NMTREEVIEW nmtv = evt.pnmh;
int hItem = nmtv.itemNew.hItem;
int wid = tv_1.GetId();
int hitem=treeview__::GetSelectedItem(wid);
//c_type=dw_type.GetItemLabel(hitem);
//Èç¹ûÊǸú½Úµã
int roothitem=treeview__::GetRootItem(wid);
if(hitem == roothitem){
c_type="";
}
else
{
c_type = treeview__::GetItemLabel(wid,hitem);
}
OnRetrieve();
return 1;
}
int adduomfolder()
{
xaserverarg__ arg = new xaserverarg__;
arg.setNativePointer(arg.CreateInstance());
arg.AddArg("note","ÐÂÔö");
arg.AddArg("m_id",m_id);
//win__::OpenWindow("dev:xpage[AddUomGroup.vx]",arg);
openUrl("¹«¹²ÉèÖÃ.vface/xpage/quickcode/AddGroup", arg);
string ok = arg.GetArgString("return");
if(ok == "ok"){
string GroupName = arg.GetArgString("GroupName");
xml__ xx=new xml__;
xx.setNativePointer(xml__::CreateInstance());
xaserverarg__ args = new xaserverarg__;
args.setNativePointer(args.CreateInstance());
args.AddArg("GroupName",GroupName);
args.AddArg("OldGroupName","");
args.AddArg("m_id",m_id);
/*if(TFile::exec(m_config,"updateuomtype",args,xx)!=1)
{
trace("error:"+xx.GetXml());
alert("±£´æ³ö´í!");
return 0;
}*/
if (url::get("QuickCode/pref/quickcode_tree.updateGroup",args.GetString(),xx) != 1)
{
trace("error:"+xx.GetXml());
alert("±£´æ³ö´í!");
return 0;
}
else
{
string vv=xx.GetXmlDoc().documentElement.text;
xml__ x=new xml__;
x.setNativePointer(xml__::CreateInstance());
x.LoadXml("
");
int root = treeview__::GetRootItem(tv_1.GetId());
if(vv=="OK")
{
treeview__::InsertChildItem(tv_1.GetId(), root, GroupName,x.GetXmlDoc().documentElement, 15);
}
}
}
return 1;
}
int modifyuomfolder()
{
int wid = tv_1.GetId();
int h = treeview__::GetSelectedItem(wid);
if (h<1)
{
alert("ÇëÑ¡ÔñÐèÒªÐ޸ĵÄ×éÃû");
return 0;
}
int roothitem=treeview__::GetRootItem(wid);
if(h==roothitem)
{
alert("²»ÄÜÐ޸ĸù½ÚµãÃû³Æ£¡");
}
else
{
msxml::IXMLDOMElement e = treeview__::GetItemData(wid,h);
trace(e.xml);
//string OldGroupName= e.SelectSingleNode("@GroupName").text;
string OldGroupName= treeview__::GetItemLabel(wid,h);
xaserverarg__ arg = new xaserverarg__;
arg.setNativePointer(arg.CreateInstance());
arg.AddArg("note","ÐÞ¸Ä");
arg.AddArg("m_id",m_id);
arg.AddArg("GroupName",OldGroupName);
win__::OpenWindow("dev:xpage[AddUomGroup.vx]",arg);
string ok = arg.GetArgString("return");
if(ok == "ok"){
string NewGroupName = arg.GetArgString("GroupName");
xml__ xx=new xml__;
xx.setNativePointer(xml__::CreateInstance());
xaserverarg__ args = new xaserverarg__;
args.setNativePointer(args.CreateInstance());
args.AddArg("GroupName",NewGroupName);
args.AddArg("OldGroupName",OldGroupName);
args.AddArg("m_id",m_id);
/*if(TFile::exec(m_config,"updateuomtype",args,xx)!=1)
{
trace("error:"+xx.GetXml());
alert("±£´æ³ö´í!");
return 0;
}*/
if (url::get("QuickCode/pref/quickcode_tree.updateGroup",args.GetString(),xx)!=1)
{
trace("error:"+xx.GetXml());
alert("±£´æ³ö´í!");
return 0;
}
else
{
trace(xx.GetXml());
string vv=xx.GetXmlDoc().documentElement.text;
if(vv=="OK")
{
treeview__::SetItemLabel(tv_1.GetId(), h,NewGroupName);
}
}
}
}
return 1;
}
int deluomfolder()
{
int wid = tv_1.GetId();
int hitem=treeview__::GetSelectedItem(wid);
if (hitem<1)
{
alert("ÇëÑ¡ÔñÐèҪɾ³ýµÄ×éÃû");
return 0;
}
else
{
int s=dw_list.GetRowCount();
if (s>0)
{
alert("¸Ã·Ö×éÏÂÃæ´æÔÚÊý¾Ý£¬²»ÄÜɾ³ý£¡");
return 0;
}
int roothitem=treeview__::GetRootItem(wid);
if(hitem==roothitem)
{
alert("²»ÄÜɾ³ý¸ù½Úµã£¡");
}
else
{
//ȱÉÙÅжÏɾ³ýµÄÌõ¼þ
string GroupName =treeview__::GetItemLabel(wid,hitem);
if(win__::MessageBox(GetHWND(),"È·¶¨É¾³ý×éÃû£º"+GroupName+" Âð£¿","Ìáʾ",1)==1)
{
xml__ xx=new xml__;
xx.setNativePointer(xml__::CreateInstance());
xaserverarg__ arg = new xaserverarg__;
arg.setNativePointer(arg.CreateInstance());
arg.AddArg("GroupName",GroupName);
arg.AddArg("m_id",m_id);
trace(GroupName);
trace(m_id);
/*if (xaserver__::ExecXAction(GetServerUrl(),"[delete.type.FND_UOM.xa]",arg.GetString()) == 1)
{
treeview__::DeleteItem(wid,hitem);
//OnTreeSelChanged();
}*/
if (url::get("QuickCode/pref/quickcode_tree.deleteGroup",arg.GetString(),xx)== 1)
{
treeview__::DeleteItem(wid,hitem);
}
else
alert("ɾ³ýʧ°Ü£¡");
}
}
}
return 1;
}
xdwgrid__ getDW()
{
return dw_list;
}
int GridSearch()
{
xml__ x = new xml__;
x.setNativePointer(xml__ ::CreateInstance());
xaserver__::LoadUrl("","dev:vface[¹«¹²ÉèÖÃ.vface]","",x);
//trace(x.GetXml());
//trace(strtpl);
string aa=strtpl;
var doc = x.GetXmlDoc();
var n = doc.selectSingleNode("//resource[@url='"+aa+"']/@src");
//trace(n.text);
xaserverarg__ arg=new xaserverarg__;
arg.setNativePointer(arg.CreateInstance());
arg.AddArg("sheet",n.text);
arg.AddArg("search",list::m_QueryTxt);
openUrl("view.dlg.vface/xpage/grid/column/search", arg);
string ok = arg.GetArgString("return");
if(ok == "ok"){
string txt = arg.GetArgString("search");
if(txt != ""){
m_QueryTxt = txt;
//trace(txt);
OnRetrieve();
}
}
return 0;
}
int OnCmdDispatch(string comdid)
{
int hCursor = xutil__::SetCursorWait();
xdwgrid__ dw=getDW();
if(comdid == "save"){
dw_list.AcceptText();
xml__ x=new xml__;
x.setNativePointer(xml__::CreateInstance());
xaserverarg__ arg=new xaserverarg__;
arg.setNativePointer(arg.CreateInstance());
dw_list.DwUpdateAllToEx(x.GetXmlDoc());
msxml::IXMLDOMElement e= x.GetXmlDoc().documentElement;
e.SetAttribute("id", m_id);
//arg.AddArg("id",m_id);
//trace(m_id);
//trace(m_dbmap);
if(m_id=="¿ªÆ±ÒøÐÐ")
{
xml__ kp = new xml__;
kp.setNativePointer(xml__::CreateInstance());
kp.LoadXml("");
msxml::IXMLDOMElement ele= kp.GetXmlDoc().documentElement;
var list = e.SelectNodes("item[@update.modify='1' or @update.delete='1' ]");
int j;
int k = list.length;
for (j=0; jdw.GetRowCount()) return 0;
dw.InsertRow(row);
dw.SetItemString(row,"GroupName",c_type);
}
else if(comdid == "delet"){
dw_list.AcceptText();
int row2 = dw.GetRow();
if(row2<1 || row2>dw.GetRowCount()) return 0;
dw.DeleteRow(row2);
}
else if (comdid=="adduomfolder")
adduomfolder();
else if (comdid=="modifyuomfolder")
modifyuomfolder();
else if (comdid=="deluomfolder")
deluomfolder();
else if (comdid=="search")
GridSearch();
xutil__::RestoreCursor(hCursor);
return 0;
}
int OnXCommand(ref TXCommandEvent evt,int p)
{
return OnCmdDispatch(""+evt.pStrID);
}
int OnSetFocus(ref TNotifyEvent evt,int p){
SetAgent();
tv_1 = new treeview__;
tv_1.setNativePointer(this.GetControl("tv_1"));
int wid = tv_1.GetId();
int root = treeview__::GetRootItem(wid);
treeview__::ExpandItem(wid,root);
return 1;
}
int OnDoubleClicked(ref TNotifyEvent evt,int p)
{
ref DWNMHDR hdr = evt.pnmh;
int row = hdr.row;
if(row<1 || row > dw_list.GetRowCount() ) return 0;
xaserverarg__ arg = new xaserverarg__;
arg.setNativePointer(arg.CreateInstance());
//string str = hdr.data;
string colname=hdr.colname;
string str = dw_list.GetItemString(row, colname);
arg.AddArg("value",str);
openUrl("/sale/view/view.dlg/xpage/memo/edit", arg);
string comdid = arg.GetArgString("comdid");
if(comdid=="xmOK")
{
string value = arg.GetArgString("value");
dw_list.SetItemString(row,colname,value);
dw_list.Redraw();
}
return 1;
}
int ItemOutput()
{
string d = xaserver__::GetCurrentDate();
d = d.left(10) +"";
dw_list.SaveAs(d);
return 1;
}
int OnSelectAllRow()
{
int rows = this.dw_list.GetRowCount();
if(rows < 1) return -1;
this.dw_list.SelectRow(1, rows, true);
this.dw_list.Redraw();
return 1;
}
int OnRowCopy()
{
int rows = this.dw_list.GetRowCount();
if(rows < 1) return -1;
int cols = this.dw_list.GetColumnCount();
string str = "";
int row = this.dw_list.GetNextSelectRow(1);
int i;
while(row > 0)
{
string tmp1 = "";
for(i=1; i 0)
{
string tmp;
if(this.dw_list.GetItemDisplayString(row, col))
tmp = this.dw_list.GetItemDisplayString(row,col);
else
tmp = this.dw_list.GetItemString(row, col);
str += tmp + "\r\n";
row = this.dw_list.GetNextSelectRow(row + 1);
}
this.dw_list.SetDataToClip(str);
return 1;
}
int OnRClick(ref TNotifyEvent evt,int p)
{
ref DWNMHDR hdr = evt.pnmh;
int row = hdr.row;
int m = win__::CreatePopupMenu();
int MF_STRING = 0x00000000;
int MF_DISABLED = 0x00000002;
int TPM_RIGHTBUTTON = 0x0002;
int TPM_RETURNCMD = 0x0100;
int MF_CHECKED = 0x8;
int MF_SEPARATOR = 0x0800;
win__::AppendMenu(m,MF_STRING, 1, "¸´ÖÆÐÐ");
win__::AppendMenu(m,MF_STRING, 101, "¸´ÖÆÁÐ");
win__::AppendMenu(m,MF_SEPARATOR, -1, "");
win__::AppendMenu(m,MF_STRING, 2, "ȫѡ");
win__::AppendMenu(m,MF_SEPARATOR, -1, "");
win__::AppendMenu(m,MF_STRING, 4, "µ¼³öµ½Excel");
win__::AppendMenu(m,MF_SEPARATOR, -1, "");
win__::AppendMenu(m,MF_STRING, 6, "ÏÔʾÁÐÉèÖÃ");
xrect xr;
xpoint pt;
win__::GetCursorPos(pt);
int ret=win__::TrackPopupMenu(m, TPM_RIGHTBUTTON | TPM_RETURNCMD, pt.x, pt.y, 0, this.GetHWND(), xr);
//trace(ret);
int hCursor = xutil__::SetCursorWait();
if(ret == 1) {OnRowCopy();}
else if(ret == 101) {
string colname=hdr.colname;
if(colname != "")
OnColCopy(colname);
}
else if(ret == 2) {OnSelectAllRow();}
else if(ret == 4) {ItemOutput();}
else if(ret == 6) {}
xutil__::RestoreCursor(hCursor);
return 1;
}
int OnAttachEvent()
{
//»ñÈ¡½¹µãʼþ£¬ÓÃÓÚÖØÖù¤¾ßÌõ
AttachEvent("WM_SETFOCUS",OnSetFocus);
//°ó¶¨¹¤¾ßÌõµã»÷ʼþ
AttachEvent("WM_XCOMMAND",OnXCommand);
//»ñµÃÊ÷µÄÑ¡Ôñʼþ
AttachEvent("tv_1", "TVN_SELCHANGED",OnTreeSelChanged);
AttachEvent("dw_list","DWV_DOUBLECLICKED",OnDoubleClicked);//ÐÐË«»÷
AttachEvent("dw_list","DWV_RCLICKED",OnRClick);//Êó±êÓÒ¼ü
}
string jxParam(string p, string n)
{
if(p != "")
{
p +="&";
int i = 1;
while (p.find("=",0)>0)
{
string name = p.mid(0, p.find("=",0));
string value = p.mid(p.find("=",0) + 1, p.find("&",0) - p.find("=",0) - 1);
if(name==n) return ""+value;
i += 1;
p = p.mid(p.find("&",0) + 1, p.length());
}
}
return "";
}
int getURLParam()
{
if(GetParam())
{
xpage__ xp=new xpage__;
xp.setNativePointer(this.GetXPage());
string aurl = xp.GetWkUrl();
xaserverarg__ arg;
if(aurl && aurl.find("native=true",0)>0)
{
int p = this.GetParam();
arg = new xaserverarg__;
arg.setNativePointer(p);
}
else
{
arg = GetParam();
}
string config = arg.GetArgString("config");
xml__ x = new xml__;
x.setNativePointer(xml__::CreateInstance());
if(config == "")
{
string configXml = arg.GetArgString("configxml");
x.LoadXml(configXml);
}
else
{
getUrl(config, "", x);
}
m_configDoc = x.GetXmlDoc();
}
return 1;
}
int loaded()
{
getURLParam();
msxml::IXMLDOMDocument ee=m_configDoc;
string id=m_id;
var n = ee.selectSingleNode("//list/dwview[@type='dwgrid'][@id='"+id+"']");
if(n)
{
msxml::IXMLDOMElement e = n;
//trace(e.xml);
string vface = m_configDoc.selectSingleNode("//vface[1]").text;
string dwname = "";//e.selectsingleNode("@name").text;
string tpl = "";//e.selectsingleNode("@url").text;
string dbmap = "";
string strtreexquery="";
if(e.selectSingleNode("@name")) dwname = e.selectSingleNode("@name").text;
if(e.selectSingleNode("@url")) tpl = e.selectSingleNode("@url").text;
if(e.selectSingleNode("@dbmap")) dbmap = e.selectSingleNode("@dbmap").text;
if(e.selectSingleNode("@treexquery")) strtreexquery = e.selectSingleNode("@treexquery").text;
m_dbmap = dbmap;
treexquery = strtreexquery;
//trace(vface +"/"+ tpl);
//trace(selectmode);
dw_list = new xdwgrid__;
dw_list.setNativePointer(GetControl(dwname));
dw_list.openUrl(vface +"/"+ tpl);
strtpl=tpl;
trace(tpl);
}
}
int onload()
{
m_config = "QuickCode.config";
m_agent = "";
dw_list = new xdwtable__;
dw_list.setNativePointer(GetControl("dw_list"));
if(this.GetParam())
{
xaserverarg__ arg = this.GetParam();
//trace(arg.GetString());
string id = arg.GetArgString("id");
if(id == "") return 0;
m_id = id;
loaded();
/*string tpl = arg.GetArgString("tpl");
if(tpl == "")
tpl = "QuickCode.tpl/QuickCode";
dw_list.SetDataObject(GetServerUrl(),"dev:sheet["+tpl+"]");
//dw_list.SetColHeaderHeight(0);
//dw_list.SetRowSelectorWidth(0);
string dbmap = arg.GetArgString("dbmap");
if(dbmap == "")
dbmap = "QuickCode.dbmap";
m_dbmap = dbmap;
string txquery=arg.GetArgString("treexquery");
treexquery=txquery;
string title = arg.GetArgString("title");
if(title != "")
win__::SetWindowText(this.GetHWND(),title);*/
OnRetrieve();
}
SetAgent();
string aa=treexquery;
string xfNodeAgentArea2 = "treeagent";
xnode__ tnode = new xnode__;
tnode.setNativePointer(GetAgentNode(xfNodeAgentArea2));
string stree="";
stree +="";
stree +="";
SetAgentNodeContent (tnode,stree);
tv_1 = new treeview__;
tv_1.setNativePointer(this.GetControl("tv_1"));
int wid = tv_1.GetId();
int root = treeview__::GetRootItem(wid);
treeview__::ExpandItem(wid,root);
OnAttachEvent();
return 1;
}
]
]
]