protected override void OnActive() { //MotherForm.SetWaitCursor(); _MoralConductElement = QueryScoreCalcRule.GetMoralConductCalcRule(); if (_MoralConductElement == null) { XmlDocument doc = new XmlDocument(); doc.LoadXml("<MoralConductScoreCalcRule/>"); _MoralConductElement = doc.DocumentElement; } DSXmlHelper helper = new DSXmlHelper(_MoralConductElement); foreach (IMoralConductInstance item in _Instances) { item.SetSource(helper.GetElement(item.XPath)); item.GetDependenceData(); if (!item.IsValidate) { SetWarring(item, (GroupPanel)((Control)item).Parent); } item.IsValidateChanged += new EventHandler(item_IsValidateChanged); } //MotherForm.ResetWaitCursor(); }
public AngelDemonComputer() { //取得德行成績計算規則 _MoralConductElement = QueryScoreCalcRule.GetMoralConductCalcRule(); if (_MoralConductElement != null) { _MoralConductHelper = new DSXmlHelper(_MoralConductElement); } else { _MoralConductHelper = new DSXmlHelper(); } #region 取得記分缺曠項目 #region 取得節次類別與缺曠對照表 List <string> periodList = new List <string>(); List <string> absenceList = new List <string>(); //取得對照表並且對照出節次->類別的清單(99/11/24 by dylan) periodDic.Clear(); //取得節次對照表 foreach (XmlElement var in SmartSchool.Feature.Basic.Config.GetPeriodList().GetContent().GetElements("Period")) { string name = var.GetAttribute("Type"); if (!periodList.Contains(name)) { periodList.Add(name); } //取得對照表並且對照出節次->類別的清單(99/11/24 by dylan) if (!periodDic.ContainsKey(var.GetAttribute("Name"))) { periodDic.Add(var.GetAttribute("Name"), var.GetAttribute("Type")); } } //取得假別對照表 foreach (XmlElement var in SmartSchool.Feature.Basic.Config.GetAbsenceList().GetContent().GetElements("Absence")) { //假別清單 string name = var.GetAttribute("Name"); if (!absenceList.Contains(name)) { absenceList.Add(name); } //建立不影響全勤清單 bool noabsence; if (bool.TryParse(var.GetAttribute("Noabsence"), out noabsence) && noabsence && !_NoabsenceList.Contains(name)) { _NoabsenceList.Add(name); } } #endregion _UsefulPeriodAbsences = new List <UsefulPeriodAbsence>(); foreach (XmlElement element in _MoralConductHelper.GetElements("PeriodAbsenceCalcRule/Rule")) { string absence = element.GetAttribute("Absence"); string period = element.GetAttribute("Period"); decimal subtract; decimal.TryParse(element.GetAttribute("Subtract"), out subtract); int aggregated; int.TryParse(element.GetAttribute("Aggregated"), out aggregated); if (aggregated > 0 && subtract > 0 && periodList.Contains(period) && absenceList.Contains(absence)) { _UsefulPeriodAbsences.Add(new UsefulPeriodAbsence(absence, period, subtract, aggregated)); } } #endregion SystemInformation.getField("Degree"); _degreeList = (Dictionary <string, decimal>)SystemInformation.Fields["Degree"]; }