//初始化RANGE private void initRange() { foreach (DataCfg cfg in cfgdata.datas) //遍历RANGE配置 { XRange range = XRangeFactory.getXRange(cfg); //工厂模式,根据配置生成实际FORM/RANGE/TABLE 对象 try { range.init(cfg, book); //range 初始化 ranges.Add(range.Name, range); //将 range 放入集合,后续可根据range名获取range if (range.getRange() == null) //如果对应的工作表中range区域 不存在,则报错,并将系统状态设置为Designer状态 { AlertUtil.Show("error", "Range对应命名区域不存在或配置异常,RangeId:" + cfg.RangeName + " 即将进入Designer模式"); statu = SysStatu.Designer; } } catch (Exception e) { Console.WriteLine(e.ToString()); MessageBox.Show("Range对应命名区域不存在或配置异异常,RangeId:" + cfg.RangeName + "\n" + e.ToString()); this.statu = SysStatu.RangeError; return; } } if (ranges.Count == 0) { this.statu = SysStatu.Designer; AlertUtil.Show("info", "未查询到有效DATA,进入设计模式!"); } }
//初始化全部配置Action private void initActions() { statu = SysStatu.ActionError; foreach (ActionCfg cfg in cfgdata.actions) { initAction(cfg); } statu = SysStatu.Single; }
//状态变化 private void ChangeToStatu(SysStatu newstatu) { //labels["lbl_User"].Text = app.statu.ToString(); if (currentXRange != null && newstatu != app.statu) { currentXRange.ResetSelected(); } app.statu = newstatu; AlertUtil.Show("状态变更", "状态变更为" + newstatu); ChangeButtonsStatu(); }
} //私有化无参构造函数,初始化必须带参 public XApp(IWorkbook book, XCfgData cfg) //初始化 { statu = SysStatu.Single; //默认为单选模式 this.book = book; rsheets = new Dictionary <string, XRSheet>(); ranges = new Dictionary <string, XRange>(); commands = new Dictionary <string, XCommand>(); actions = new Dictionary <string, XAction>(); try { init(cfg);//执行初始化 } catch (Exception) { //MessageBox.Show(e.ToString()); this.cfgdata = null; this.statu = SysStatu.SheetError; } }
//根据名称获取SHEET public XRSheet getRSheetByName(String name) { XRSheet rsheet = null; try { rsheet = rsheets[name]; } catch (Exception) { rsheet = new XRSheet(book.Worksheets.ActiveWorksheet); AlertUtil.Show("error", "Sheet:" + name + "未注册!请检查配置!"); statu = SysStatu.Designer; if (rsheet.sheetName != name) { return(null); } rsheets.Add(rsheet.sheet.Name, rsheet); } return(rsheet); }
//Sheet的初始化 private void initSheet() { this.rsheets = new Dictionary <string, XRSheet>(); foreach (SheetCfg sheetdata in cfgdata.sheets) { Worksheet sheet = getSheetByName(sheetdata.SheetName); //xsheet.initTables(); if (sheet == null) {//如果对应sheet为空,则进入设计模式 statu = SysStatu.Designer; return; } XRSheet xsheet = new XRSheet(sheet); xsheet.hideflag = sheetdata.NeedHide; xsheet.app = this; xsheet.setVisable(""); rsheets.Add(xsheet.sheetName, xsheet); } LoadRangeToSheet(); }
//根据ActionCfg初始化单个Action private void initAction(ActionCfg cfg) { XAction action = ActionFactory.MakeAction(cfg, this); if (action == null) { statu = SysStatu.Error; return; } XCommand cmd = getCommandByName(cfg.CommandName); try { action.cmd = cmd; cmd = getCommandByName(cfg.CommandName); cmd.actions.Add(action.actionSeq, action); } catch (Exception) { MessageBox.Show("Action:" + action.ActionName + "与命令:" + cfg.CommandName + "绑定失败,请检查Action配置是否正确!"); return; } this.actions.Add(action.ActionName, action); }