/// <summary> /// Reset form for change in source column type if needed /// </summary> /// <param name="sourceColumnType"></param> public void SetSourceColumnType( int sourceColumnTypeInt) { MetaColumnType sourceColumnType = (MetaColumnType)sourceColumnTypeInt; SetupFormForColumnType(sourceColumnType); // setup form CalcField.SourceColumnType = sourceColumnType; CalcField.SetDerivedValues(); CondFormatRules rules = new CondFormatRules(); CondFormatRulesCtl.SetupControl(CalcField.PreclassificationlResultType, rules.ColoringStyle); rules.Add(new CondFormatRule()); // include initial rule CondFormatRulesCtl.SetupControl(CalcField.PreclassificationlResultType, rules); return; }
/// <summary> /// Set contents of calculated field form /// </summary> /// <param name="cf"></param> void SetupForm() { InSetup = true; CalcField cf = CalcField; CalcFieldColumn cfc; CalcFieldColumnControl cfcc; CondFormatRules rules; int ci, cci; MetaColumnType mcType = MetaColumnType.Number; // be sure source column type is set MetaColumn cfMc = null; Tabs.SelectedTabPageIndex = 0; // be sure first tab is selected SetupControlVisibility(); foreach (CalcFieldColumnControl cfc0 in CfColCtls) // clear field selector controls on form { cfc0.FieldSelectorControl.Query = QueriesControl.Instance.CurrentQuery; // cfc0.CfCol.Query = QueriesControl.Instance.CurrentQuery; cfc0.FieldSelectorControl.MetaColumn = null; } AdvancedExpr.Text = ""; FormatAdvancedExpr(cf.AdvancedExpr, out AdvancedEditorPseudoQuery); // setup advanced field menu if (cf.CalcType == CalcTypeEnum.Basic) { cfMc = cf.MetaColumn1; BasicOptionButton.Checked = true; if (cf.Operation != "") { Operation.Text = cf.Operation; } else { Operation.Text = "/ (Division)"; } cf.SetDerivedValues(); } else // advanced type { AdvancedOptionButton.Checked = true; AdvancedExpr.Text = FormatAdvancedExpr(cf.AdvancedExpr, out AdvancedEditorPseudoQuery); List <MetaColumn> mcList = cf.GetInputMetaColumnList(); if (mcList.Count > 0) { cfMc = mcList[0]; } // Setup result type if (cf.PreclassificationlResultType == MetaColumnType.Unknown) { cf.PreclassificationlResultType = MetaColumnType.Number; } string txt = cf.PreclassificationlResultType.ToString(); if (Lex.Eq(txt, "String")) { txt = "Text"; // fixup } ResultDataType.Text = txt; // Setup outer join table JoinAnchorComboBox.Text = ""; if (Lex.IsDefined(cf.OuterJoinRoot)) { for (ci = 0; ci < cf.CfCols.Count; ci++) { cfc = cf.CfCols[ci]; if (cfc.MetaColumn == null) { continue; } MetaTable mt = cfc.MetaColumn.MetaTable; if (Lex.Eq(cf.OuterJoinRoot, cfc.MetaColumn.MetaTable.Name)) { JoinAnchorComboBox.Text = cfc.MetaColumn.MetaTable.Label; break; } } } } // Setup column controls for source column type if (cfMc != null) { cf.SourceColumnType = cfMc.DataType; } else { cf.SourceColumnType = MetaColumnType.Number; } SetupFormForColumnType(cf.SourceColumnType); // Add column controls MetaColumn references and function info cci = -1; // col control index for (ci = 0; ci < cf.CfCols.Count; ci++) { cfc = cf.CfCols[ci]; cci++; if (cci >= CfColCtls.Count) { throw new Exception("Number of calculated field columns exceeds limit of: " + CfColCtls.Count); } cfcc = CfColCtls[cci]; cfcc.FieldSelectorControl.MetaColumn = cfc.MetaColumn; if (Lex.IsDefined(cfc.Function)) { cfcc.Function.Text = cfc.Function; } else { cfcc.Function.Text = "None"; } cfcc.Constant.Text = cfc.Constant; cfcc.Constant.Enabled = Lex.Contains(cfc.Function, "constant"); } CalcField.ColumnLabel = FieldColumnName.Text; Description.Text = cf.Description; if (cf.Operation != "") { Operation.SelectedItem = cf.Operation; } if (cf.Classification != null) { rules = cf.Classification.Rules; } else { rules = new CondFormatRules(); } if (rules.Count == 0) { rules.Add(new CondFormatRule()); // include initial rule } CondFormatRulesCtl.SetupControl(CalcField.PreclassificationlResultType, rules.ColoringStyle); CondFormatRulesCtl.SetupControl(CalcField.PreclassificationlResultType, rules); InSetup = false; return; }