//──────────────────────────────────────── /// <summary> /// 全てのフォームの、レイアウトの一時停止を解除。 /// </summary> private void ResumeLayout( TableUserformconfig fo_Config, MemoryApplication memoryApplication, Log_Reports pg_Logging ) { Log_Method pg_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); pg_Method.BeginMethod(Info_LayoutImpl.Name_Library, this, "ResumeLayout", pg_Logging); // // foreach (RecordUserformconfig fo_Record in fo_Config.List_RecordUserformconfig) { string sName_Control; fo_Record.TryGetString(out sName_Control, NamesFld.S_NAME, true, "", memoryApplication, pg_Logging); // // S → E。 コントロール名 Expression_Node_StringImpl ec_FcName = new Expression_Node_StringImpl(null, fo_Record.Parent_TableUserformconfig.Cur_Configurationtree); ec_FcName.AppendTextNode( sName_Control, fo_Record.Parent_TableUserformconfig.Cur_Configurationtree, pg_Logging ); List <Usercontrol> list_FcUc; if (pg_Logging.Successful) { list_FcUc = memoryApplication.MemoryForms.GetUsercontrolsByName( ec_FcName, true, pg_Logging ); } else { list_FcUc = new List <Usercontrol>(); } if (pg_Logging.Successful) { Usercontrol uct = list_FcUc[0]; if (uct is UsercontrolWindow) { UsercontrolWindow uctWnd = (UsercontrolWindow)uct; uctWnd.CustomcontrolWindow1.ResumeLayout(false); } } } // // // // pg_Method.EndMethod(pg_Logging); }
//──────────────────────────────────────── /// <summary> /// フォームのデータの再読み込みを行います。 /// /// どのフォームを再読み込みするかは、コントロール・リローディング設定ファイルで /// 設定しているリローダー要素の名前を指定します。 /// </summary> /// <param select="o_Name_Together"></param> public void RefreshDataRange( XenonName o_Name_Together, Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_MiddleImpl.Name_Library, this, "RefreshDataRange", log_Reports); // // // // List <Configurationtree_Node> listCf_Together = this.Configurationtree_Togetherconfig.GetChildrenByNodename(NamesNode.S_TOGETHER, false, log_Reports); foreach (Configurationtree_Node cf_Together in listCf_Together) { string sFncName; cf_Together.Dictionary_Attribute.TryGetValue(PmNames.S_NAME, out sFncName, false, log_Reports); // 一致するのは1件しかない前提。 if (sFncName == o_Name_Together.SValue) { if (log_Reports.Successful) { // 最新表示にするコントロールの名前のリスト。 List <Configurationtree_Node> cfList_RfrTarget = cf_Together.GetChildrenByNodename(NamesNode.S_TARGET, false, log_Reports); foreach (Configurationtree_Node cf_RfrTarget in cfList_RfrTarget) { List <Usercontrol> list_FcUc; { string sName; cf_RfrTarget.Dictionary_Attribute.TryGetValue(PmNames.S_NAME, out sName, true, log_Reports); Expression_Node_StringImpl e_str = new Expression_Node_StringImpl(null, cf_RfrTarget); e_str.AppendTextNode( sName, cf_RfrTarget, log_Reports ); list_FcUc = this.Owner_MemoryApplication.MemoryForms.GetUsercontrolsByName( e_str, true, log_Reports ); } if (log_Reports.Successful) { Usercontrol fcUc = list_FcUc[0]; fcUc.RefreshData( log_Reports ); } } } } } // // // // log_Method.EndMethod(log_Reports); }
//──────────────────────────────────────── private void Execute6_Sub(Log_Reports log_Reports) { Log_Method log_Method = new Log_MethodImpl(0); log_Method.BeginMethod(Info_Functions.Name_Library, this, "Execute6_Sub", log_Reports); string sFlowSkip; this.TrySelectAttribute(out sFlowSkip, Expression_Node_Function04Impl.PM_FLOWSKIP, EnumHitcount.One_Or_Zero, log_Reports); if ("" != sFlowSkip.Trim()) { // 処理をスキップします。 goto gt_EndMethod; } // // // // テーブル名 // // // List <string> sList_TableName = new List <string>(); { string sTableNames; this.TrySelectAttribute(out sTableNames, Expression_Node_Function04Impl.PM_NAME_TABLE, EnumHitcount.One_Or_Zero, log_Reports); CsvTo_DataTableImpl reader = new CsvTo_DataTableImpl(); DataTable tblNamesTable = reader.Read( sTableNames ); foreach (DataRow row in tblNamesTable.Rows) { foreach (string column in row.ItemArray) { sList_TableName.Add(column); } } } foreach (string sTableName in sList_TableName) { Table_Humaninput o_Table; if (log_Reports.Successful) { Expression_Node_String ec_ArgTableName; this.TrySelectAttribute(out ec_ArgTableName, Expression_Node_Function04Impl.PM_NAME_TABLE, EnumHitcount.One_Or_Zero, log_Reports); Expression_Node_StringImpl ec_TableName = new Expression_Node_StringImpl(this, ec_ArgTableName.Cur_Configuration); ec_TableName.AppendTextNode( sTableName, this.Cur_Configuration, log_Reports ); // テーブル o_Table = this.Owner_MemoryApplication.MemoryTables.GetTable_HumaninputByName( ec_TableName, true, log_Reports ); } else { o_Table = null; } string sCsvText; if (log_Reports.Successful) { ToCsv_Table_Humaninput_Impl textizer = new ToCsv_Table_Humaninput_Impl(); sCsvText = textizer.ToCsvText(o_Table, log_Reports); if (!log_Reports.Successful) { // 既エラー。 goto gt_EndMethod; } } else { sCsvText = null; } string sFpatha;//絶対ファイルパス if (log_Reports.Successful) { // 正常時 //essageBox.Show("テーブルのtext=[" + csvText + "]", "デバッグ"); // TODO ファイルパスの妥当性判定も欲しい sFpatha = o_Table.Expression_Filepath_ConfigStack.Execute4_OnExpressionString( EnumHitcount.Unconstraint, log_Reports); if (!log_Reports.Successful) { // 既エラー。 goto gt_EndMethod; } } else { sFpatha = ""; } if (log_Reports.Successful) { bool bPopup; string sPopup; this.TrySelectAttribute(out sPopup, Expression_Node_Function04Impl.PM_POPUP, EnumHitcount.One_Or_Zero, log_Reports); if ("block" == sPopup.Trim()) { log_Method.WriteInfo_ToConsole("sPopup=[" + sPopup + "] ポップアップしません。"); bPopup = false; } else { bPopup = true; } CsvWriterImpl writer = new CsvWriterImpl(); writer.Write( sCsvText, sFpatha, bPopup); } } gt_EndMethod: log_Method.EndMethod(log_Reports); }
//──────────────────────────────────────── public static Usercontrol GetUsercontrol( Configurationtree_Node cf_CurTree, MemoryApplication memoryApplication, Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_XmlToConf.Name_Library, "Util_XmlToConfigurationtree_NodeImpl", "GetUsercontrol", log_Reports); Usercontrol fcUc = null; string sFcName; string err_FcName; // // 対応するコントロール。 List <Usercontrol> list_Usercontrol; { // コントロール名。 Expression_Node_StringImpl ec_String = new Expression_Node_StringImpl(null, memoryApplication.MemoryValidators.Configurationtree_Validatorsconfig); { PmName pmName = PmNames.S_NAME; if (cf_CurTree.Dictionary_Attribute.ContainsKey(pmName.Name_Pm)) { cf_CurTree.Dictionary_Attribute.TryGetValue(pmName, out sFcName, true, log_Reports); ec_String.AppendTextNode( sFcName, memoryApplication.MemoryValidators.Configurationtree_Validatorsconfig, log_Reports ); } else { // // エラー。 err_FcName = "<コントロール名無し>"; goto gt_Error_NotFoundFc02; } } list_Usercontrol = memoryApplication.MemoryForms.GetUsercontrolsByName( ec_String, true, log_Reports ); } if (list_Usercontrol.Count < 1) { // // エラー。 err_FcName = sFcName; goto gt_Error_NotFoundFc02; } else { fcUc = list_Usercontrol[0]; } goto gt_EndMethod; // // #region 異常系 //──────────────────────────────────────── gt_Error_NotFoundFc02: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, err_FcName, log_Reports); //関数名 tmpl.SetParameter(2, Log_RecordReportsImpl.ToText_Configuration(memoryApplication.MemoryValidators.Configurationtree_Validatorsconfig), log_Reports); //設定位置パンくずリスト memoryApplication.CreateErrorReport("Er:8001;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── #endregion // // gt_EndMethod: log_Method.EndMethod(log_Reports); return(fcUc); }
//──────────────────────────────────────── #endregion #region アクション //──────────────────────────────────────── /// <summary> /// プロジェクト読取り時の定形アクション実行。 /// </summary> /// <param name="sender"></param> /// <param name="st_PrevProjectElm_OrNull"></param> /// <param name="bProjectValid"></param> /// <param name="log_Reports"></param> public override string Execute5_Main(Log_Reports log_Reports) { //()メソッド開始 Log_Method log_Method = new Log_MethodImpl(1); log_Method.BeginMethod(Info_Functions.Name_Library, this, "Execute5_Main", log_Reports); // if (log_Method.CanDebug(1)) { log_Method.WriteDebug_ToConsole("「プロジェクト選択時」用のイベントハンドラーを実行します。"); } //()タスク_デスクリプション { string sFncName0; this.TrySelectAttribute(out sFncName0, PmNames.S_NAME.Name_Pm, EnumHitcount.One_Or_Zero, log_Reports); if (this.Functionparameterset.Sender is Customcontrol) { Customcontrol ccFc = (Customcontrol)this.Functionparameterset.Sender; string sName_Usercontrol = ccFc.ControlCommon.Expression_Name_Control.Execute4_OnExpressionString(EnumHitcount.Unconstraint, log_Reports); log_Reports.Comment_EventCreationMe += "/追加:[" + sName_Usercontrol + "]コントロールが、[" + sFncName0 + "]アクションを実行。"; } else { log_Reports.Comment_EventCreationMe += "/追加:[" + sFncName0 + "]アクションを実行。"; } } Configurationtree_Node conf_ThisMethod = new Configurationtree_NodeImpl(log_Method.Fullname, null); if (this.EnumEventhandler == EnumEventhandler.Editor_B_Lr) { //(4)独自モデルの取得 if (log_Method.CanDebug(1)) { log_Method.WriteDebug_ToConsole("(4)独自モデルの取得"); } // this.On_P04_ReadNewModel(log_Reports); //(5)エディター名。ツール設定ファイルに記載されている方。 if (log_Method.CanDebug(1)) { log_Method.WriteDebug_ToConsole("(5)エディター名。ツール設定ファイルに記載されている方。"); } // 表示用の名称。 string sName_SelectingEditor; if (this.Functionparameterset.SelectedProjectElement_Configurationtree == null) { // // 切り替えるプロジェクトが判明していない場合は、空文字列。 // sName_SelectingEditor = ""; } else { // // todo: エディター設定ファイルの方のエディター名を入れても意味ないのでは? // sName_SelectingEditor = ((MemoryAatoolxml_Editor)this.Functionparameterset.SelectedProjectElement_Configurationtree).Name; } //(6)まず、きれいさっぱり プロジェクトをクリアーします。(切替用) if (log_Method.CanDebug(1)) { log_Method.WriteDebug_ToConsole("(6)まず、きれいさっぱり プロジェクトをクリアーします。(切替用)"); } // todo:イベントハンドラーを外してから、フォームを外すこと。リストボックスが誤挙動を起こしている。 this.On_P06_ClearProject(this.Functionparameterset.Sender, log_Reports); //(7)「Aa_Editor.xml」読取。 if (log_Method.CanDebug(1)) { log_Method.WriteDebug_ToConsole("(7)「Aa_Editor.xml」読取。"); } // if (!this.Functionparameterset.IsProjectValid || this.Functionparameterset.SelectedProjectElement_Configurationtree == null) { MemoryAatoolxml_Editor moAatoolxml_PrevEditorElm_OrNull = null; // // // // デフォルト・プロジェクト名が指定されていない場合、 // ツール設定ファイルの最初に記述されているプロジェクトを選択します。 // // // if (log_Reports.Successful) { if ("" == sName_SelectingEditor) { // // デフォルト・エディター名が未指定の場合。 // MemoryAatoolxml_Editor moAatoolxml_DefaultEditor = this.Owner_MemoryApplication.MemoryAatoolxml.GetDefaultEditor(true, log_Reports); if (!log_Reports.Successful) { // 既エラー。 goto gt_EndMethod; } // ↓これ要る? sName_SelectingEditor = moAatoolxml_DefaultEditor.Name; } } this.On_P07_SelectDefaultProject(ref sName_SelectingEditor, ref moAatoolxml_PrevEditorElm_OrNull, this.Functionparameterset.IsProjectValid, log_Reports); this.Functionparameterset.SelectedProjectElement_Configurationtree = moAatoolxml_PrevEditorElm_OrNull; // // // //「プロジェクトを開いた時の初期化」イベントハンドラーで使うために、ここで設定します。 // // // this.Functionparameterset.SelectedProjectElement_Configurationtree = this.Owner_MemoryApplication.MemoryAatoolxml.GetEditorByName(sName_SelectingEditor, true, log_Reports); if (!log_Reports.Successful) { // 既エラー。 goto gt_EndMethod; } } // ↓追加 if (null == this.Functionparameterset.SelectedProjectElement_Configurationtree) { { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, sName_SelectingEditor, log_Reports);//エディター名 this.Owner_MemoryApplication.CreateErrorReport("Er:110003;", tmpl, log_Reports); } } // ↑追加 //(13a)エディター・フォルダー。 if (log_Method.CanDebug(1)) { log_Method.WriteDebug_ToConsole("(13a)エディター・フォルダーパス類推。"); } // // // Expression_Node_Filepath ec_Fopath_Editor; if (log_Reports.Successful) { MemoryAatoolxml_Editor moAatoolxml_SelectedEditor = (MemoryAatoolxml_Editor)this.Functionparameterset.SelectedProjectElement_Configurationtree; ec_Fopath_Editor = moAatoolxml_SelectedEditor.GetFilepathByFsetvarname( NamesVar.S_SP_EDITOR, this.Owner_MemoryApplication.MemoryVariables, true, log_Reports ); } else { ec_Fopath_Editor = null; } //(13b)「Aa_Editor.xml」読取。 if (log_Method.CanDebug(1)) { log_Method.WriteDebug_ToConsole("(13b)「Aa_Editor.xml」ファイルパス類推。"); } // Expression_Node_Filepath ec_Fpath_AaEditorXml; if (log_Reports.Successful) { // // ツール設定ファイルで指定された値から、自動類推で設定されているはず。 // Configurationtree_NodeFilepath cf_Fpath_EditorXml = new Configurationtree_NodeFilepathImpl( "ツール設定ファイル[" + Application.StartupPath + System.IO.Path.DirectorySeparatorChar + ValuesAttr.S_FPATHR_AATOOLXML + "]の中の[" + sName_SelectingEditor + "]エディターへの指定から自動類推", null); // フォルダーパス + \Aa_Editor.xml string sFpatha_Aaeditorxml = ec_Fopath_Editor.Execute4_OnExpressionString(EnumHitcount.Unconstraint, log_Reports) + System.IO.Path.DirectorySeparatorChar + NamesFile.S_AA_EDITOR_XML; // プロジェクト起動時に。 cf_Fpath_EditorXml.InitPath( sFpatha_Aaeditorxml, log_Reports ); ec_Fpath_AaEditorXml = new Expression_Node_FilepathImpl(cf_Fpath_EditorXml); } else { ec_Fpath_AaEditorXml = null; } //(8)「エディター設定ファイル」に記述されている<f-set-var>要素を、「エディター設定ファイル・モデル」に格納。Cf→M if (log_Method.CanDebug(1)) { log_Method.WriteDebug_ToConsole("(8)「エディター設定ファイル」に記述されている<f-set-var>要素を、「エディター設定ファイル・モデル」に格納。Cf→M。この時点で「Sp:Engine;」といったシステム変数は自動類推が終わっている必要があります。"); } // MemoryAaeditorxml_Editor moAaeditorxml_Editor = null; if (log_Reports.Successful) { this.On_P08_SpToVar_( out moAaeditorxml_Editor, ec_Fpath_AaEditorXml, ec_Fopath_Editor, (MemoryAatoolxml_Editor)this.Functionparameterset.SelectedProjectElement_Configurationtree, log_Reports ); } // // // // ここで「Aa_Files.csv」を読み込みたい。 // // // if (log_Reports.Successful) { //(9)変数ファイル読取 if (log_Method.CanDebug(1)) { log_Method.WriteDebug_ToConsole("(9)変数ファイル読取"); } // this.Owner_MemoryApplication.MemoryVariables.LoadVariables( Application.StartupPath, log_Reports ); } if (log_Reports.Successful) { //(10)プログラマー用・デバッグモードのON/OFF。 if (log_Method.CanDebug(1)) { log_Method.WriteDebug_ToConsole("(10)プログラマー用・デバッグモードのON/OFF。"); } // //mainWndの作成より先に設定する必要がある。ステータスバーを出す、出さないについて。 { Expression_Leaf_StringImpl ec_Varname = new Expression_Leaf_StringImpl(this, this.Cur_Configuration.Parent); ec_Varname.SetString(NamesVar.S_SS_DEBUGMODE_PROGRAMMER, log_Reports); string sValue = this.Owner_MemoryApplication.MemoryVariables.GetStringByVariablename(ec_Varname, false, log_Reports); if (ValuesAttr.S_ON == sValue) { Log_ReportsImpl.BDebugmode_Static = true; } else if (ValuesAttr.S_OFF == sValue) { Log_ReportsImpl.BDebugmode_Static = false; } else if (ValuesAttr.S_EMPTY == sValue) { // 無視 } else { // TODO:エラー } } } if (log_Reports.Successful) { //(11)画面レイアウト・デバッグモードのON/OFF。 if (log_Method.CanDebug(1)) { log_Method.WriteDebug_ToConsole("(11)フォーム・デバッグモードのON/OFF。"); } // Expression_Leaf_StringImpl ec_Varname = new Expression_Leaf_StringImpl(this, this.Cur_Configuration.Parent); ec_Varname.SetString(NamesVar.S_SS_DEBUGMODE_FORM, log_Reports); string sValue = this.Owner_MemoryApplication.MemoryVariables.GetStringByVariablename(ec_Varname, false, log_Reports); if (ValuesAttr.S_ON == sValue) { Log_ReportsImpl.BDebugmode_Form = true; } else if (ValuesAttr.S_OFF == sValue) { Log_ReportsImpl.BDebugmode_Form = false; } else if (ValuesAttr.S_EMPTY == sValue) { // 無視 } else { // TODO:エラー } } //(14)「Aa_Files.csv」読取。 if (log_Method.CanDebug(1)) { log_Method.WriteDebug_ToConsole("(14)「Aa_Files.csv」読取。"); } // List <Expression_Node_Filepath> ecList_Fpath_BackupRequest; { if (log_Reports.Successful) { // 正常時 Expression_Node_Function function_Expr = Collection_Function.NewFunction2( Expression_Node_Function22Impl.NAME_FUNCTION, this, this.Cur_Configuration, this.Owner_MemoryApplication, log_Reports); // 実行 function_Expr.Execute4_OnLr(this.Functionparameterset.Sender, log_Reports); // 実行後 ecList_Fpath_BackupRequest = ((Expression_Node_Function22Impl)function_Expr).List_Expression_Filepath_BackupRequest_Out; } else { // // エラー // ecList_Fpath_BackupRequest = null; } } //(14b)ユーザー定義関数設定ファイル読取【2012-03-30追加】 if (log_Method.CanDebug(1)) { log_Method.WriteDebug_ToConsole("(14b)ユーザー定義関数設定ファイル読取【2012-03-30追加】"); } // if (log_Reports.Successful) { // タイプデータ値。 Expression_Leaf_StringImpl ec_NameVariable = new Expression_Leaf_StringImpl(this, new Configurationtree_NodeImpl("!ハードコーディング", null)); ec_NameVariable.SetString(ValuesTypeData.S_CODE_FUNCTIONS, log_Reports); List <MemoryCodefileinfo> listInfo = null; if (log_Reports.Successful) { listInfo = this.Owner_MemoryApplication.MemoryCodefiles.GetCodefileinfoByTypedata(ec_NameVariable, true, log_Reports); } if (log_Reports.Successful) { foreach (MemoryCodefileinfo scriptfile in listInfo) { if (log_Reports.Successful) { this.Owner_MemoryApplication.MemoryFunctions.LoadFile( scriptfile.Expression_Filepath, log_Reports); } else { break; } } } } //(16)『スタイルシート設定ファイル』読取 if (log_Method.CanDebug(1)) { log_Method.WriteDebug_ToConsole("(16)『スタイルシート設定ファイル』読取"); } // if (log_Reports.Successful) { Expression_Node_Function expr_Func = Collection_Function.NewFunction2( Expression_Node_Function19Impl.NAME_FUNCTION, this, this.Cur_Configuration, this.Owner_MemoryApplication, log_Reports); Expression_Node_StringImpl ec_Str = new Expression_Node_StringImpl(this, conf_ThisMethod); ec_Str.AppendTextNode(NamesVar.S_ST_STYLESHEET, this.Cur_Configuration, log_Reports); expr_Func.SetAttribute(Expression_Node_Function19Impl.PM_NAME_TABLE_STYLESHEET, ec_Str, log_Reports); expr_Func.Execute4_OnLr( this.Functionparameterset.Sender, log_Reports ); } //(17a)「バックアップを取る」前にしておく独自実装をするタイミング。 if (log_Method.CanDebug(1)) { log_Method.WriteDebug_ToConsole("(17a)「バックアップを取る」前にしておく独自実装をするタイミング。"); } // this.On_P17a_PreviousBackup( this.Functionparameterset.Sender, moAaeditorxml_Editor, ec_Fpath_AaEditorXml, ec_Fopath_Editor, (MemoryAatoolxml_Editor)this.Functionparameterset.SelectedProjectElement_Configurationtree, log_Reports); //(17b)今日の分のバックアップを取ります。 if (log_Method.CanDebug(1)) { log_Method.WriteDebug_ToConsole("(17b)今日の分のバックアップを取ります。"); } // this.On_P17b_DateBackup(ecList_Fpath_BackupRequest, this.Functionparameterset.Sender, log_Reports); //(17c)「新規ウィンドウを開く」前にしておく独自実装をするタイミング。 if (log_Method.CanDebug(1)) { log_Method.WriteDebug_ToConsole("(17c)「新規ウィンドウを開く」前にしておく独自実装をするタイミング。"); } // this.On_P17c_PreviousOpenWindow( this.Functionparameterset.Sender, moAaeditorxml_Editor, ec_Fpath_AaEditorXml, ec_Fopath_Editor, (MemoryAatoolxml_Editor)this.Functionparameterset.SelectedProjectElement_Configurationtree, log_Reports); //(18)関数30「新規ウィンドウを開く」実行。引数には関数を2つ指定できる。 if (log_Method.CanDebug(1)) { log_Method.WriteDebug_ToConsole("(18)関数30「新規ウィンドウを開く」実行。引数には関数を2つ指定できる。"); } // { Expression_Node_Function expr_Func = Collection_Function.NewFunction2( Expression_Node_Function30Impl.NAME_FUNCTION, this, this.Cur_Configuration, this.Owner_MemoryApplication, log_Reports); { //Expression_Node_Function30Impl f1 = { Expression_Node_StringImpl ec_FormStart; { Expression_FvarImpl ec_Fvar = new Expression_FvarImpl(this, this.Cur_Configuration, this.Owner_MemoryApplication); ec_Fvar.AppendTextNode(NamesVar.S_SS_FORM_START, this.Cur_Configuration, log_Reports); ec_FormStart = new Expression_Node_StringImpl(this, this.Cur_Configuration); ec_FormStart.List_Expression_Child.Add(ec_Fvar, log_Reports); } ((Expression_Node_Function30Impl)expr_Func).SetAttribute(Expression_Node_Function30Impl.PM_NAME_FORM, ec_FormStart, log_Reports); } ((Expression_Node_Function30Impl)expr_Func).In_Subroutine_Function30_1 = this.In_Subroutine_Function30_1_OrNull; ((Expression_Node_Function30Impl)expr_Func).In_Subroutine_Function30_2 = this.In_Subroutine_Function30_2_OrNull; ((Expression_Node_Function30Impl)expr_Func).SetAttribute( Expression_Node_Function30Impl.PM_NAME_TOGETHER, new Expression_Leaf_StringImpl(NamesStg.S_STG_BEGIN_APPLICATION, null, conf_ThisMethod), log_Reports); } expr_Func.Execute4_OnLr( this.Functionparameterset.Sender, log_Reports ); } //(19)最後に if (log_Method.CanDebug(1)) { log_Method.WriteDebug_ToConsole("(19)最後に"); } // this.On_P19_AtLast( this.Functionparameterset.Sender, (MemoryAatoolxml_Editor)this.Functionparameterset.SelectedProjectElement_Configurationtree, this.Functionparameterset.IsProjectValid, log_Reports); // // 「S」と「E」を出力したい。 if (false) { // 「S」全てのコントロールと、ユーザー定義関数について。 log_Method.WriteInfo_ToConsole("┌──────────┐「S」全てのコントロールについて。"); this.Owner_MemoryApplication.MemoryForms.ForEach_Children(delegate(string sKey, Usercontrol fcUc, ref bool bRemove, ref bool bBreak) { Log_TextIndented s = new Log_TextIndentedImpl(); s.Append("[" + sKey + "]"); s.Newline(); fcUc.ControlCommon.Expression_Control.Cur_Configuration.ToText_Content(s); log_Method.WriteInfo_ToConsole(s.ToString()); }); log_Method.WriteInfo_ToConsole("└──────────┘"); log_Method.WriteInfo_ToConsole("┌──────────┐「S」全てのユーザー定義関数について。"); this.Owner_MemoryApplication.MemoryFunctions.ForEach_Children(delegate(string sKey, Expression_Node_Function ec_CommonFunction, ref bool bRemove, ref bool bBreak) { Log_TextIndented s = new Log_TextIndentedImpl(); s.Append("[" + sKey + "]"); s.Newline(); ec_CommonFunction.Cur_Configuration.ToText_Content(s); log_Method.WriteInfo_ToConsole(s.ToString()); }); log_Method.WriteInfo_ToConsole("└──────────┘"); // 「E」全てのコントロールと、ユーザー定義関数について。 log_Method.WriteInfo_ToConsole("┌──────────┐「E」全てのコントロールについて。"); this.Owner_MemoryApplication.MemoryForms.ForEach_Children(delegate(string sKey, Usercontrol fcUc, ref bool bRemove, ref bool bBreak) { Log_TextIndented s = new Log_TextIndentedImpl(); s.Append("[" + sKey + "]"); s.Newline(); fcUc.ControlCommon.Expression_Control.ToText_Snapshot(s); log_Method.WriteInfo_ToConsole(s.ToString()); }); log_Method.WriteInfo_ToConsole("└──────────┘"); log_Method.WriteInfo_ToConsole("┌──────────┐「E」全てのユーザー定義関数について。"); this.Owner_MemoryApplication.MemoryFunctions.ForEach_Children(delegate(string sKey, Expression_Node_Function ec_CommonFunction, ref bool bRemove, ref bool bBreak) { Log_TextIndented s = new Log_TextIndentedImpl(); s.Append("[" + sKey + "]"); s.Newline(); ec_CommonFunction.ToText_Snapshot(s); log_Method.WriteInfo_ToConsole(s.ToString()); }); log_Method.WriteInfo_ToConsole("└──────────┘"); } log_Method.WriteInfo_ToConsole("◆起動終了"); goto gt_EndMethod; // gt_EndMethod: log_Method.EndMethod(log_Reports); } return(""); }
//──────────────────────────────────────── /// <summary> /// 指定の仕方で、トゥゲザーを読み取りに行く場所が変わる。 /// /// (1)トゥゲザー名で指定した場合 /// 「トゥゲザー設定ファイル(Frfr)」の1箇所。 /// /// (2)トゥゲザー名で指定しなかった場合 /// 「トゥゲザー設定ファイル(Frfr)」と、「コントロール設定ファイル(Fcnf)」の2箇所。 /// </summary> /// <param name="log_Reports"></param> protected void Execute6_Sub( Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_Functions.Name_Library, this, "Execute6_Sub", log_Reports); if (log_Reports.CanStopwatch) { log_Method.Log_Stopwatch.Message = Utility_Textformat.Format_StopwatchComment( this, this.Cur_Configuration, log_Reports ); log_Method.Log_Stopwatch.Begin(); } Configurationtree_Node cf_TgTogether; if (log_Reports.Successful) { string sArg_Name_Together; this.TrySelectAttribute(out sArg_Name_Together, Expression_Node_Function27Impl.PM_NAME_TOGETHER, EnumHitcount.One_Or_Zero, log_Reports); if ("" != sArg_Name_Together.Trim()) { // // // // トゥゲザー名を指定した場合 // // // this.Execute6_ByName( out cf_TgTogether, log_Reports); } else { // // // // トゥゲザー名を指定していない場合 // // // this.Execute6_ByNoName( out cf_TgTogether, log_Reports); } } else { cf_TgTogether = null; } //.WriteLine(this.GetType().Name + "#Perform_WrRhn: ◆ 指定のコントロールを、リフレッシュした。"); // <refresher>が無い場合もある。その場合は無視する。 if (null == cf_TgTogether) { goto gt_EndMethod; } // // // // 妥当性判定を行います。 // // // if (log_Reports.Successful) { // // // 21:妥当性判定 // 所要時間目安[0]ミリ秒ほど // // // // 妥当性を判定したいコントロール名を一覧しているトゥゲザーの名前。 // List <Configurationtree_Node> cfList_RfrTarget = cf_TgTogether.GetChildrenByNodename(NamesNode.S_TARGET, false, log_Reports); //.WriteLine(this.GetType().Name + "#: ◆ トゥゲザー名=[" + .Value + "] 対象Fc数=[" + oTargetList.Count + "]"); foreach (Configurationtree_Node cf_RfrTarget in cfList_RfrTarget) { string sName; cf_RfrTarget.Dictionary_Attribute.TryGetValue(PmNames.S_NAME, out sName, true, log_Reports); Expression_Node_StringImpl ec_Str = new Expression_Node_StringImpl(this, cf_RfrTarget); ec_Str.AppendTextNode( sName, cf_RfrTarget, log_Reports ); List <Usercontrol> list_FcUc2; if (log_Reports.Successful) { list_FcUc2 = this.Owner_MemoryApplication.MemoryForms.GetUsercontrolsByName( ec_Str, true, log_Reports ); } else { list_FcUc2 = new List <Usercontrol>(); } if (log_Reports.Successful) { Usercontrol fcUc2 = list_FcUc2[0]; // 妥当性判定を行います。 fcUc2.JudgeValidity( log_Reports ); } } // // // // } goto gt_EndMethod; // // gt_EndMethod: log_Method.EndMethod(log_Reports); }
//──────────────────────────────────────── #endregion #region アクション //──────────────────────────────────────── /// <summary> /// アクション実行。 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public override string Execute5_Main(Log_Reports log_Reports)// EventArgs e { Log_Method log_Method = new Log_MethodImpl(0); log_Method.BeginMethod(Info_Functions.Name_Library, this, "Execute5_Main", log_Reports); if (this.EnumEventhandler == EnumEventhandler.O_Ea) { string sFncName; this.TrySelectAttribute(out sFncName, PmNames.S_NAME.Name_Pm, EnumHitcount.One_Or_Zero, log_Reports); if (log_Reports.CanStopwatch) { log_Method.Log_Stopwatch.Message = "Nアクション[" + sFncName + "]実行"; log_Method.Log_Stopwatch.Begin(); } if (this.Functionparameterset.Sender is Customcontrol) { Customcontrol fcCc = (Customcontrol)this.Functionparameterset.Sender; string fcNameStr = fcCc.ControlCommon.Expression_Name_Control.Execute4_OnExpressionString(EnumHitcount.Unconstraint, log_Reports); log_Reports.Comment_EventCreationMe = "[" + fcNameStr + "]コントロールが、[" + sFncName + "]アクションを実行。"; } else { log_Reports.Comment_EventCreationMe = "[" + sFncName + "]アクションを実行。"; } // テーブル Table_Humaninput o_Table_Src; { Expression_Node_String ec_ArgTableName; this.TrySelectAttribute(out ec_ArgTableName, Expression_Node_Function06Impl.PM_NAME_TABLE_SOURCE, EnumHitcount.One_Or_Zero, log_Reports); o_Table_Src = this.Owner_MemoryApplication.MemoryTables.GetTable_HumaninputByName( ec_ArgTableName, true, log_Reports ); } Expression_Node_Filepath ec_Fpath_Csv; if (log_Reports.Successful) { ec_Fpath_Csv = o_Table_Src.Expression_Filepath_ConfigStack; } else { ec_Fpath_Csv = null; } // CSVファイルパス string sFpatha_csv;//絶対ファイルパス if (log_Reports.Successful) { // 正常時 // TODO ファイルパスの妥当性判定も欲しい sFpatha_csv = ec_Fpath_Csv.Execute4_OnExpressionString( EnumHitcount.Unconstraint, log_Reports); if (!log_Reports.Successful) { // 既エラー。 goto gt_EndMethod; } } else { sFpatha_csv = ""; } // // 外部アプリケーションの起動。 // Expression_Node_String ec_Fpath_ArgExternalApplication; this.TrySelectAttribute(out ec_Fpath_ArgExternalApplication, Expression_Node_Function06Impl.PM_FILEPATH_EXTERNALAPPLICATION, EnumHitcount.One_Or_Zero, log_Reports); string sEaFilePath = ec_Fpath_ArgExternalApplication.Execute4_OnExpressionString(EnumHitcount.Unconstraint, log_Reports); if ("" != sEaFilePath) { Expression_Node_Filepath ec_Fpath_App; if (log_Reports.Successful) { // 正常時 Expression_Node_String ecValue = new Expression_Node_StringImpl(this, this.Cur_Configuration); ecValue.AppendTextNode( sEaFilePath, this.Cur_Configuration, log_Reports ); ec_Fpath_App = ecValue.Execute4_OnExpressionString_AsFilepath( EnumHitcount.Unconstraint, log_Reports ); } else { ec_Fpath_App = null; } string sFpatha_ExternalApplication;//絶対ファイルパス if (log_Reports.Successful) { // 正常時 // 外部プログラムの起動 sFpatha_ExternalApplication = ec_Fpath_App.Execute4_OnExpressionString( EnumHitcount.Unconstraint, log_Reports); if (!log_Reports.Successful) { // 既エラー。 goto gt_EndMethod; } } else { sFpatha_ExternalApplication = ""; } if (log_Reports.Successful) { // 正常時 string program = sFpatha_ExternalApplication; string argument = sFpatha_csv; Process extProcess = new Process(); extProcess.StartInfo.FileName = program; //起動するファイル名 extProcess.StartInfo.Arguments = argument; //起動時の引数 extProcess.Start(); } } } // // gt_EndMethod: log_Method.EndMethod(log_Reports); return(""); }
//──────────────────────────────────────── public override void Translate( Configurationtree_Node cur_Cf, //<lookup-id> Expression_Node_String parent_Ec, //< Sf:text-template;> MemoryApplication memoryApplication, Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog, Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_ConfigurationtreeToExpression.Name_Library, this, "SToE", log_Reports); if (log_Method.CanDebug(1)) { pg_ParsingLog.Increment("(9)" + cur_Cf.Name); } // // // // // // 自 // // // Expression_Node_String cur_Ec = new Expression_Node_StringImpl(parent_Ec, cur_Cf); // // // // 親へ連結 (value属性) // // // { // // 自要素の value="" 属性を、親へ連結 // PmName pmName = PmNames.S_VALUE; string sValue; bool bHit = cur_Cf.Dictionary_Attribute.TryGetValue(pmName, out sValue, false, log_Reports); if (bHit) { cur_Ec.AppendTextNode( sValue, cur_Cf, log_Reports ); // // // // 子 // // // this.ParseChild_InConfigurationtreeToExpression( cur_Cf, cur_Ec,//自 memoryApplication, pg_ParsingLog, log_Reports ); // // // // 親へ連結 ※属性連結 // // // parent_Ec.SetAttribute(PmNames.S_LOOKUP_ID.Name_Pm, cur_Ec, log_Reports); goto gt_EndMethod; } else { } } // // // // 子 // // // { //<a-default>の子要素を確認し、親<f-switch>のdefault属性に追加します。 this.ParseChild_InConfigurationtreeToExpression( cur_Cf, cur_Ec, memoryApplication, pg_ParsingLog, log_Reports ); } // // // // 親へ連結 // // // parent_Ec.SetAttribute(PmNames.S_LOOKUP_ID.Name_Pm, cur_Ec, log_Reports); // // // // 親へ連結 debug // // // if (log_Method.CanDebug(1)) { string parent_SName_Fnc; parent_Ec.TrySelectAttribute(out parent_SName_Fnc, PmNames.S_NAME.Name_Pm, EnumHitcount.One_Or_Zero, log_Reports); log_Method.WriteDebug_ToConsole(" ☆☆☆☆☆☆☆☆ 親<[" + parent_Ec.Cur_Configuration.Name + "] name=”[" + parent_SName_Fnc + "]” >"); string sName_MyFnc; cur_Ec.TrySelectAttribute(out sName_MyFnc, PmNames.S_NAME.Name_Pm, EnumHitcount.One_Or_Zero, log_Reports); log_Method.WriteDebug_ToConsole(" ☆☆☆☆☆☆☆☆ 自<[" + cur_Ec.Cur_Configuration.Name + "] name=”[" + sName_MyFnc + "]” >"); } goto gt_EndMethod; // // gt_EndMethod: if (Log_ReportsImpl.BDebugmode_Static) { pg_ParsingLog.Decrement(cur_Cf.Name); } log_Method.EndMethod(log_Reports); }
//──────────────────────────────────────── #endregion #region アクション //──────────────────────────────────────── /// <summary> /// 『レイアウト設定ファイル』をもとに、 /// コントロール(UserControl)を作成します。 /// /// 作成できなかった、または作成しなかった場合はヌル。 /// /// プロパティーの設定は、この時点では、名前だけ行います。 /// </summary> /// <param name="fo_Record"></param> /// <param name="bRequired">未定義の設定があったときに、エラーにするなら真。</param> /// <param name="pg_Logging"></param> public Usercontrol Create( RecordUserformconfig fo_Record, bool bRequired_NotUse,// TODO:必ず真でいいのでは? MemoryApplication owner_MemoryApplication, Log_Reports pg_Logging ) { Log_Method pg_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); pg_Method.BeginMethod(Info_LayoutImpl.Name_Library, this, "Create", pg_Logging); // // string sName_Control; fo_Record.TryGetString(out sName_Control, NamesFld.S_NAME, true, "", owner_MemoryApplication, pg_Logging); // // コントロール名 レコード→Ec Expression_Node_StringImpl ec_Name_Control = new Expression_Node_StringImpl(null, fo_Record.Parent_TableUserformconfig.Cur_Configurationtree); ec_Name_Control.AppendTextNode( sName_Control, fo_Record.Parent_TableUserformconfig.Cur_Configurationtree, pg_Logging ); Usercontrol ucontrol = null; string sType_Control; fo_Record.TryGetString(out sType_Control, NamesFld.S_TYPE, true, "", owner_MemoryApplication, pg_Logging); if (null == sType_Control) { goto gt_Error_Type; } else if (!this.Dictionary_UsercontrolCreator.ContainsKey(sType_Control))//TODO:設定ミス時への対応。フィールド名がヌル? { goto gt_Error_FName; } UsercontrolCreator2 uctCreator = this.Dictionary_UsercontrolCreator[sType_Control]; ucontrol = uctCreator.Perform(ec_Name_Control, owner_MemoryApplication); if (null != ucontrol) { // ヌル オブジェクトを設定。 ucontrol.ControlCommon.Expression_Control = new Expression_ControlImpl( null, new Configurationtree_NodeImpl(NamesNode.S_HARDCODING_CONTROL, null), ucontrol, owner_MemoryApplication ); ucontrol.ControlCommon.Owner_MemoryApplication = owner_MemoryApplication; } else { goto gt_Error_NullUsercontrol; } goto gt_EndMethod; // // #region 異常系 //──────────────────────────────────────── gt_Error_NullUsercontrol: if (pg_Logging.CanCreateReport) { Log_RecordReports r = pg_Logging.BeginCreateReport(EnumReport.Error); r.SetTitle("▲エラー356!", pg_Method); Log_TextIndented s = new Log_TextIndentedImpl(); s.Append("ucontrolがヌルでした。"); s.Newline(); s.Newline(); // ヒント s.Append(r.Message_Configuration(fo_Record.Parent_TableUserformconfig.Cur_Configurationtree)); r.Message = s.ToString(); pg_Logging.EndCreateReport(); } goto gt_EndMethod; //──────────────────────────────────────── gt_Error_Type: if (pg_Logging.CanCreateReport) { Log_RecordReports r = pg_Logging.BeginCreateReport(EnumReport.Error); r.SetTitle("▲エラー355!", pg_Method); Log_TextIndented s = new Log_TextIndentedImpl(); s.Append("コントロールの型が指定されていません。"); s.Newline(); s.Newline(); s.Append(" 『レイアウト設定』をもとに、コントロールを作成しているときに、"); s.Newline(); s.Append(" エラーが発生しました。"); s.Newline(); // ヒント s.Append(r.Message_Configuration(fo_Record.Parent_TableUserformconfig.Cur_Configurationtree)); r.Message = s.ToString(); pg_Logging.EndCreateReport(); } goto gt_EndMethod; //──────────────────────────────────────── gt_Error_FName: // テーブルタイプが「Form」で、"TREE" フィールドがないとき。 // (Form_lstタイプには、TREEフィールドは要らない) if (pg_Logging.CanCreateReport) { Log_RecordReports r = pg_Logging.BeginCreateReport(EnumReport.Error); r.SetTitle("▲エラー354!", pg_Method); Log_TextIndented t = new Log_TextIndentedImpl(); t.Append(" 『レイアウト設定』をもとに、コントロールを作成しているときに、"); t.Newline(); t.Append(" エラーが発生しました。"); t.Newline(); t.Newline(); t.Append(" 指定の型=["); t.Append(sType_Control); t.Append("]は未定義のコントロールの型です。"); // ヒント t.Append(r.Message_Configuration(fo_Record.Parent_TableUserformconfig.Cur_Configurationtree)); r.Message = t.ToString(); pg_Logging.EndCreateReport(); } goto gt_EndMethod; //──────────────────────────────────────── #endregion // // gt_EndMethod: pg_Method.EndMethod(pg_Logging); return(ucontrol); }
//──────────────────────────────────────── /// <summary> /// コントロールにスタイルを設定します。 /// </summary> public void SetupStyle( TableUserformconfig fo_Config, MemoryApplication memoryApplication, Log_Reports pg_Logging ) { Log_Method pg_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); pg_Method.BeginMethod(Info_LayoutImpl.Name_Library, this, "SetupStyle", pg_Logging); // // // 全てのフォームの、レイアウトを一時停止。 // this.SuspendLayout( fo_Config, memoryApplication, pg_Logging ); foreach (RecordUserformconfig fo_Record in fo_Config.List_RecordUserformconfig) { string sName_Control; fo_Record.TryGetString(out sName_Control, NamesFld.S_NAME, true, "", memoryApplication, pg_Logging); // // S → E。 コントロール名 Expression_Node_StringImpl e_fcName = new Expression_Node_StringImpl(null, fo_Record.Parent_TableUserformconfig.Cur_Configurationtree); e_fcName.AppendTextNode( sName_Control, fo_Record.Parent_TableUserformconfig.Cur_Configurationtree, pg_Logging ); // // 名前から、コントロールの取得。 // List <Usercontrol> fcUcList; if (pg_Logging.Successful) { fcUcList = memoryApplication.MemoryForms.GetUsercontrolsByName( e_fcName, true, pg_Logging ); } else { fcUcList = new List <Usercontrol>(); } // // スタイルの設定。 // if (pg_Logging.Successful) { Usercontrol fcUc = fcUcList[0]; fcUc.SetupStyle( fo_Record, pg_Logging ); } // 「メインウィンドウ」の場合、更にスタイル設定の上書き。 string sType_Control; fo_Record.TryGetString(out sType_Control, NamesFld.S_TYPE, true, "", memoryApplication, pg_Logging); if (NamesF.S_MAINWND == sType_Control) { // // スタイルの設定。 // if (pg_Logging.Successful) { memoryApplication.MemoryForms.Mainwnd_FormWrapping.SetupStyle( fo_Record, pg_Logging ); } } } // // // 全てのフォームの、レイアウトの一時停止を解除。 // // this.ResumeLayout( fo_Config, memoryApplication, pg_Logging ); // // // // pg_Method.EndMethod(pg_Logging); }
//──────────────────────────────────────── #endregion #region アクション //──────────────────────────────────────── /// <summary> /// X → S /// /// event要素の読取と、処理の実行。 /// </summary> /// <param select="xEvent"></param> /// <param select="fcUc"></param> public void XmlToConfigurationtree( string sName_Control, Configurationtree_Node cf_ControlConfig, XmlElement xControl,//<control>要素。子要素の読取りに利用。 MemoryApplication owner_MemoryApplication, Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_XmlToConf.Name_Library, this, "XToCf", log_Reports); // // Expression_Node_String ec_Name_Control; XmlElement err_11elm; Exception err_Excp; Configurationtree_Node cur_Cf; if (log_Reports.Successful) { // コントロール名。 ec_Name_Control = new Expression_Node_StringImpl(null, cf_ControlConfig); ec_Name_Control.AppendTextNode( sName_Control, cf_ControlConfig, log_Reports ); List <Usercontrol> list_Usercontrol = owner_MemoryApplication.MemoryForms.GetUsercontrolsByName( ec_Name_Control, true, log_Reports ); Usercontrol uct; if (list_Usercontrol.Count < 1) { // // エラー。 goto gt_Error_NotFoundFc; } else { uct = list_Usercontrol[0]; } //if (null == uct.ControlCommon.Configurationtree_Control) //{ // uct.ControlCommon.Configurationtree_Control = new Configurationtree_NodeImpl(NamesNode.S_CONTROL+"(ヌル時の代替)", cf_ControlConfig); //} // // // // 自 // // // cur_Cf = new Configurationtree_NodeImpl(NamesNode.S_CONTROL1, cf_ControlConfig); //上書きします。 uct.ControlCommon.Configurationtree_Control = cur_Cf; // // コントロール名。 uct.ControlCommon.Configurationtree_Control.Dictionary_Attribute.Add(PmNames.S_NAME.Name_Pm, sName_Control, uct.ControlCommon.Configurationtree_Control, true, log_Reports); // // // // 子 // // // { // <data>、<event>、<view>要素を列挙 XmlNodeList child_XNl = xControl.ChildNodes; foreach (XmlNode child_XNode in child_XNl) { if (XmlNodeType.Element == child_XNode.NodeType) { XmlElement child_XElm = (XmlElement)child_XNode; try { XmlToConfigurationtree_C15_Elm to = this.Dictionary_XmlToConfigurationtree_Elm[child_XElm.Name]; to.XmlToConfigurationtree( child_XElm, cur_Cf, owner_MemoryApplication, log_Reports ); } catch (ArgumentException e) { // // エラー。 err_11elm = child_XElm; err_Excp = e; goto gt_Error_UndefinedChild; } catch (Exception e) { // // エラー。 err_11elm = child_XElm; err_Excp = e; goto gt_Error_Exception03; } } } } } goto gt_EndMethod; // // #region 異常系 //──────────────────────────────────────── gt_Error_NotFoundFc: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); string sFcName = ec_Name_Control.Execute4_OnExpressionString(EnumHitcount.Unconstraint, log_Reports); tmpl.SetParameter(1, sFcName, log_Reports); //コントロール名 tmpl.SetParameter(2, Log_RecordReportsImpl.ToText_Configuration(cf_ControlConfig), log_Reports); //設定位置パンくずリスト owner_MemoryApplication.CreateErrorReport("Er:8017;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── gt_Error_UndefinedChild: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); string sFcName = ec_Name_Control.Execute4_OnExpressionString(EnumHitcount.Unconstraint, log_Reports); tmpl.SetParameter(1, NamesNode.S_CONTROL1, log_Reports); //期待するノード名 tmpl.SetParameter(2, err_11elm.Name, log_Reports); //実際のノード名 tmpl.SetParameter(3, Log_RecordReportsImpl.ToText_Configuration(cur_Cf), log_Reports); //設定位置パンくずリスト tmpl.SetParameter(4, Log_RecordReportsImpl.ToText_Exception(err_Excp), log_Reports); //例外メッセージ owner_MemoryApplication.CreateErrorReport("Er:8018;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── gt_Error_Exception03: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, err_11elm.Name, log_Reports); //ノード名 tmpl.SetParameter(2, Log_RecordReportsImpl.ToText_Configuration(cur_Cf), log_Reports); //設定位置パンくずリスト tmpl.SetParameter(3, Log_RecordReportsImpl.ToText_Exception(err_Excp), log_Reports); //例外メッセージ owner_MemoryApplication.CreateErrorReport("Er:8019;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── #endregion // // gt_EndMethod: log_Method.EndMethod(log_Reports); }
public void ParseAttr_InConfigurationtreeToExpression( Configurationtree_Node cur_Cf, Expression_Node_String cur_Ec, bool bRequired_NameAttr, //name属性が必須な場合、真。 bool bRequired_ValueAttrIsChild, //value属性を、子<f-str>にする場合、真。 Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_ConfigurationtreeToExpression.Name_Library, this, "ParseAttr", log_Reports); // // if (log_Reports.Successful) { // // s属性 はなんでも受け入れるとする。 // cur_Cf.Dictionary_Attribute.ForEach(delegate(string sPmName, string sAttrValue, ref bool bBreak) { Expression_Node_String ec_AttrValue; if (log_Reports.Successful) { ec_AttrValue = new Expression_Node_StringImpl(cur_Ec, cur_Cf); ec_AttrValue.AppendTextNode(sAttrValue, cur_Cf, log_Reports);//ここでエラー? } else { bBreak = true; goto gt_EndMethod1; } if (log_Reports.Successful) { if (bRequired_ValueAttrIsChild && PmNames.S_VALUE.Name_Pm == sPmName) { // value属性は、子<f-str>にする。 //d_InMethod.WriteDebug_ToConsole(2," ["+sAttrName+"]属性を子要素として追加。"); cur_Ec.List_Expression_Child.Add(ec_AttrValue, log_Reports); } else { // 属性にする。 cur_Ec.SetAttribute(sPmName, ec_AttrValue, log_Reports); } } else { bBreak = true; goto gt_EndMethod1; } if (log_Method.CanDebug(1)) { log_Method.WriteDebug_ToConsole(" ├属性[" + sPmName + "]=”[" + sAttrValue + "]”"); } // 追加したe_Attr=[" + e_AttrValue.Execute4_OnExpressionString(EnumHitcount.Unconstraint, log_Reports) + "] e属性数=[" + e_Cur.Dictionary_Expression_Attribute.Count + "] 子要素数=[" + e_Cur.List_Child.Count + "] goto gt_EndMethod1; // // // // gt_EndMethod1: ; }); // // 【開発中 2012-06-04】 // S_Elmの、S_AttrDic は廃止したい。 // if (bRequired_NameAttr) { // // name属性は必須。 // string sFncName2; log_Reports.Log_Callstack.Push(log_Method, "①name必須指定"); cur_Ec.TrySelectAttribute(out sFncName2, PmNames.S_NAME.Name_Pm, EnumHitcount.One, log_Reports); log_Reports.Log_Callstack.Pop(log_Method, "①name必須指定"); if (log_Method.CanDebug(1)) { log_Method.WriteDebug_ToConsole("sFncName2=[" + sFncName2 + "]"); } //bool bHit = s_Cur.Dictionary_Attribute.TryGetValue(PmNames.NAME.SAttrName, out sFncName2, true, log_Reports); if (!log_Reports.Successful) { goto gt_EndMethod; } } } else { goto gt_EndMethod; } goto gt_EndMethod; // // gt_EndMethod: log_Method.EndMethod(log_Reports); }
//──────────────────────────────────────── /// <summary> /// S → E /// /// データソース、 /// データターゲット、 /// <view> /// の3つを変換。 /// </summary> /// <param oNodeName="sList_Name_Control"></param> /// <param oNodeName="s_FcConfig"></param> /// <param oNodeName="moOpyopyo"></param> /// <param oNodeName="log_Reports"></param> public void Translate( List <string> sList_Name_Control, Configurationtree_Node cf_FcConfig, MemoryApplication memoryApplication, Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog, Log_Reports log_Reports ) { //throw new Exception(Info_SToE.LibraryName + ":" + this.GetType().Name + "#SToE: このメソッドは廃止方針です。"); // // // // デバッグ開始 // // // Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_ConfigurationtreeToExpression.Name_Library, this, "SToE_DsrcDtrg", log_Reports); if (log_Method.CanDebug(1)) { pg_ParsingLog.Increment("(1)データソース・データターゲット・SSR"); } // // // // string sName_Usercontrol; if (log_Reports.Successful) { // 正常時 foreach (string sFcName in sList_Name_Control) { // コントロール名。 Expression_Node_StringImpl ec_FcName = new Expression_Node_StringImpl(null, cf_FcConfig); ec_FcName.AppendTextNode( sFcName, cf_FcConfig, log_Reports ); // コントロール名の指定は、1件のみと想定。 List <Usercontrol> list_Usercontrol = memoryApplication.MemoryForms.GetUsercontrolsByName( ec_FcName, true, log_Reports ); Usercontrol fcUc; if (list_Usercontrol.Count < 1) { sName_Usercontrol = sFcName; goto gt_Error_NotFoundUsercontrol; } else { fcUc = list_Usercontrol[0]; } Configurationtree_Node cf_Control = fcUc.ControlCommon.Configurationtree_Control; if (null == cf_Control) { // // O_コントロール要素を新規作成。 cf_Control = new Configurationtree_NodeImpl(NamesNode.S_CONTROL1, cf_FcConfig); fcUc.ControlCommon.Configurationtree_Control = cf_Control; } else { // // O_コントロール要素は既存。 } // // コントロール名。 fcUc.ControlCommon.Configurationtree_Control.Dictionary_Attribute.Set(PmNames.S_NAME.Name_Pm, sFcName, log_Reports); ConfigurationtreeToExpression_F11_ControlImpl_ to0 = new ConfigurationtreeToExpression_F11_ControlImpl_(); to0.Translate( cf_Control, fcUc.ControlCommon.Expression_Control, memoryApplication, pg_ParsingLog, log_Reports ); } } goto gt_EndMethod; // // #region 異常系 //──────────────────────────────────────── gt_Error_NotFoundUsercontrol: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, sName_Usercontrol, log_Reports); //コントロール名 tmpl.SetParameter(2, Log_RecordReportsImpl.ToText_Configuration(cf_FcConfig), log_Reports); //設定位置パンくずリスト memoryApplication.CreateErrorReport("Er:7001;", tmpl, log_Reports); } // 処理を中断。 goto gt_EndMethod; //──────────────────────────────────────── #endregion // // gt_EndMethod: if (Log_ReportsImpl.BDebugmode_Static) { pg_ParsingLog.Decrement("データソース・データターゲット・SSR"); } log_Method.EndMethod(log_Reports); }
//──────────────────────────────────────── public void Translate( Configurationtree_Node cur_Conf, Expression_Node_String parent_Expr, MemoryApplication memoryApplication, Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog, Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_ConfigurationtreeToExpression.Name_Library, this, "SToE", log_Reports); if (log_Method.CanDebug(1)) { pg_ParsingLog.Increment("(40)" + cur_Conf.Name); } // // // // // // // // 自 // // // Expression_Node_String ec_Value = new Expression_Node_StringImpl(parent_Expr, cur_Conf); ec_Value.AppendTextNode( cur_Conf.Name, cur_Conf, log_Reports ); // // // // 自 // // // Expression_Node_StringImpl cur_Expr = new Expression_Node_StringImpl(parent_Expr, cur_Conf); // // // // 属性 // // // { cur_Expr.SetAttribute( PmNames.S_NAME.Name_Pm, ec_Value, log_Reports ); parent_Expr.SetAttribute( NamesNode.S_RECORD_SET_LOAD_FROM, ((Expression_Node_String)cur_Expr), log_Reports ); } // // // // 子要素 // // // { this.ParseChild_InConfigurationtreeToExpression( cur_Conf, cur_Expr, memoryApplication, pg_ParsingLog, log_Reports ); } // // // // if (Log_ReportsImpl.BDebugmode_Static) { pg_ParsingLog.Decrement(cur_Conf.Name); } log_Method.EndMethod(log_Reports); }
//──────────────────────────────────────── #endregion #region アクション //──────────────────────────────────────── public override string Execute5_Main(Log_Reports log_Reports) { Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_Functions.Name_Library, this, "Execute5_Main", log_Reports); string sFncName0; this.TrySelectAttribute(out sFncName0, PmNames.S_NAME.Name_Pm, EnumHitcount.One_Or_Zero, log_Reports); if (log_Reports.CanStopwatch) { log_Method.Log_Stopwatch.Message = "Nアクション[" + sFncName0 + "]実行"; log_Method.Log_Stopwatch.Begin(); } // // Expression_Node_String err_Ec_FcName1; if (this.EnumEventhandler == EnumEventhandler.O_Lr) { if (this.Functionparameterset.Sender is Customcontrol) { Customcontrol fcCc = (Customcontrol)this.Functionparameterset.Sender; string sName_Usercontrol = fcCc.ControlCommon.Expression_Name_Control.Execute4_OnExpressionString( EnumHitcount.Unconstraint, log_Reports ); log_Reports.Comment_EventCreationMe = "[" + sName_Usercontrol + "]コントロールが、[" + sFncName0 + "]アクションを実行。"; } else { log_Reports.Comment_EventCreationMe = "[" + sFncName0 + "]アクションを実行。"; } // // // // // // このNAction29を含んでいるcontrol要素から // コントロールの名前を取得。 Expression_Node_String ec_FcName1; // // このNAction29要素を含んでいる control要素から、コントロールの名前を取得。 List <Usercontrol> list_FcUc; if (log_Reports.Successful) { // 正常時 Configuration_Node cf_Event = this.Cur_Configuration.GetParentByNodename( NamesNode.S_EVENT, EnumConfiguration.Unknown, false, log_Reports); if (null != cf_Event) { Configuration_Node owner_Configurationtree_Control = cf_Event.GetParentByNodename( NamesNode.S_CONTROL1, EnumConfiguration.Tree, true, log_Reports); if (null != owner_Configurationtree_Control) { string sName_Usercontrol; ((Configurationtree_Node)owner_Configurationtree_Control).Dictionary_Attribute.TryGetValue(PmNames.S_NAME, out sName_Usercontrol, true, log_Reports); Expression_Node_StringImpl ec_Str = new Expression_Node_StringImpl(this, this.Cur_Configuration); ec_Str.AppendTextNode( sName_Usercontrol, this.Cur_Configuration, log_Reports ); ec_FcName1 = ec_Str; } else { ec_FcName1 = null; } } else { ec_FcName1 = null; } // // 指定のコントロール // list_FcUc = this.Owner_MemoryApplication.MemoryForms.GetUsercontrolsByName( ec_FcName1, true, log_Reports ); } else { // // エラー。 ec_FcName1 = null; list_FcUc = null; err_Ec_FcName1 = ec_FcName1; goto gt_Error_NullFcUc; } // ここで、fcUc は必ずある。 Usercontrol fct = list_FcUc[0]; // // // // View // // // // 最初の1個のみ有効。必ずあるとする。 List <Expression_Node_String> ecList_View = fct.ControlCommon.Expression_Control.SelectDirectchildByNodename(NamesNode.S_VIEW, false, EnumHitcount.One, log_Reports); if (!log_Reports.Successful) { goto gt_EndMethod; } Expression_Node_StringImpl ec_View = (Expression_Node_StringImpl)ecList_View[0]; // // O → N は、Fcnfをロードした時点で実行済み。 if (ec_View.List_Expression_Child.Count < 1) { // // エラー。 // // このアクションを使うからには、 // 必ず<view>の中に子要素がないといけない。 err_Ec_FcName1 = ec_FcName1; goto gt_Error_EmptyView; } object errorRule = null; Expression_Node_String err_Ec_DataTarget = null; if (log_Reports.Successful) { // 正常時 ec_View.List_Expression_Child.ForEach(delegate(Expression_Node_String ec_Child, ref bool bRemove, ref bool bBreak) { string sFncName; ec_Child.TrySelectAttribute(out sFncName, PmNames.S_NAME.Name_Pm, EnumHitcount.One_Or_Zero, log_Reports); if ( NamesNode.S_FNC == ec_Child.Cur_Configuration.Name && NamesFnc.S_LISTBOX_LABELS == sFncName ) { // <f-list-box-labels> // // fcUc は、必ずリストボックス。 if (!(fct is UsercontrolListbox)) { // // エラー。 goto gt_Error_NotListbox; } UsercontrolListbox uctLst = (UsercontrolListbox)fct; // // リストボックスの表示を自作します。項目の高さが固定の場合。 uctLst.DrawMode = DrawMode.OwnerDrawFixed; // // N → Uc // // 描画プログラムの作成。 ListboxItemDrawer_02Impl drawer = new ListboxItemDrawer_02Impl( this.Owner_MemoryApplication); // // item-valur-to-variable="" 属性 // //if (null == nF11.E_ItemValueToVariable) { // <データ access="to">から取りたい。 Expression_Node_String ec_ItemValueToVariable = null;//ソース情報利用 List <Expression_Node_String> ecList_DataTarget; { List <Expression_Node_String> ecList_Data = uctLst.ControlCommon.Expression_Control.SelectDirectchildByNodename(NamesNode.S_DATA, false, EnumHitcount.Unconstraint, log_Reports); ecList_DataTarget = Utility_Expression_NodeImpl.SelectItemsByPmAsCsv(ecList_Data, PmNames.S_ACCESS.Name_Pm, ValuesAttr.S_TO, false, EnumHitcount.First_Exist, log_Reports); } if (!log_Reports.Successful) { goto gt_EndMethod2; } Expression_Node_String ec_DataTarget = ecList_DataTarget[0]; err_Ec_DataTarget = ec_DataTarget; if (null != ec_DataTarget) { bool bHit = ec_DataTarget.TrySelectAttribute( out ec_ItemValueToVariable, PmNames.S_NAME_VAR.Name_Pm, EnumHitcount.One, log_Reports); if (bHit) { drawer.Expression_ValueVariableName = ec_ItemValueToVariable; } else { // エラー。 goto gt_Error_NullItemValueToVariable; } } else { // エラー。 goto gt_Error_NotFoundDataTarget; } } //else //{ // // // // 変数名設定。 // drawer.Ec_ValueVariableName = nF11.E_ItemValueToVariable; //} // // <fnc name=”Sf:item-label;”> List <Expression_Node_String> ecList_Fnc = ec_Child.SelectDirectchildByNodename(NamesNode.S_FNC, false, EnumHitcount.Unconstraint, log_Reports); ecList_Fnc = Utility_Expression_NodeImpl.SelectItemsByPmAsCsv(ecList_Fnc, PmNames.S_NAME.Name_Pm, NamesFnc.S_ITEM_LABEL2, false, EnumHitcount.First_Exist, log_Reports); if (!log_Reports.Successful) { // エラー。 goto gt_EndMethod2; } drawer.Expression_ItemLabel = ecList_Fnc[0]; if (log_Reports.Successful) { // // 描画プログラムの変更。 uctLst.ListboxItemDrawer = drawer; } } else { errorRule = ec_Child; // // エラー。未定義の<view>。 goto gt_Error_UndefinedView; } goto gt_EndMethod2; // // // // // // エラー。 gt_Error_NotListbox: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, ec_FcName1.Execute4_OnExpressionString(EnumHitcount.Unconstraint, log_Reports), log_Reports); //コントロール名 tmpl.SetParameter(2, fct.GetType().Name, log_Reports); //コントロールのクラス名 this.Owner_MemoryApplication.CreateErrorReport("Er:110019;", tmpl, log_Reports); } goto gt_EndMethod2; // // エラー。 gt_Error_NotFoundDataTarget: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, ec_FcName1.Execute4_OnExpressionString(EnumHitcount.Unconstraint, log_Reports), log_Reports);//コントロール名 this.Owner_MemoryApplication.CreateErrorReport("Er:110020;", tmpl, log_Reports); } goto gt_EndMethod2; // // エラー。 gt_Error_NullItemValueToVariable: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, PmNames.S_NAME_VAR.Name_Pm, log_Reports); //引数名NameVar tmpl.SetParameter(2, ec_FcName1.Execute4_OnExpressionString(EnumHitcount.Unconstraint, log_Reports), log_Reports); //コントロール名 // // 「access="to"」要素を取得しているような。 // Log_TextIndented s1 = new Log_TextIndentedImpl(); err_Ec_DataTarget.ToText_Snapshot(s1); tmpl.SetParameter(3, s1.ToString(), log_Reports);//データターゲットの変数の中身 Log_TextIndented s2 = new Log_TextIndentedImpl(); err_Ec_DataTarget.Cur_Configuration.ToText_Content(s2); tmpl.SetParameter(4, s2.ToString(), log_Reports);//データターゲットの設定の中身 this.Owner_MemoryApplication.CreateErrorReport("Er:110021;", tmpl, log_Reports); } goto gt_EndMethod2; // // エラー。 gt_Error_UndefinedView: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, errorRule.GetType().Name, log_Reports); //要素のクラス名 tmpl.SetParameter(2, ec_Child.Cur_Configuration.Name, log_Reports); //設定の子要素のノード名 tmpl.SetParameter(3, sFncName, log_Reports); //設定の子要素の関数名 this.Owner_MemoryApplication.CreateErrorReport("Er:110022;", tmpl, log_Reports); } goto gt_EndMethod2; gt_EndMethod2: ; }); // // 「表示プログラム」を作成、 // リストボックスにその「リスト作成プログラム」を渡す。 // リストボックスは再表示されるたびに、 // その「リスト作成プログラム」を実行。 // 以下、その「表示プログラム」の内容。 // // ループカウンタの回数だけ、リストに項目を追加。 // // その内容は、値が<a-item-value>から取得。 // // その内容は、表示ラベルが<a-item-label>から取得。 // // その表示ラベルは、次の条件に一致した時、グレー色にする。 // // <a-item-gray-out> // <f-all-true> // <a-empty-field> } goto gt_EndMethod; } goto gt_EndMethod; // // #region 異常系 //──────────────────────────────────────── gt_Error_NullFcUc: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, err_Ec_FcName1.Execute4_OnExpressionString(EnumHitcount.Unconstraint, log_Reports), log_Reports);//コントロール名 this.Owner_MemoryApplication.CreateErrorReport("Er:110023;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── gt_Error_EmptyView: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, err_Ec_FcName1.Execute4_OnExpressionString(EnumHitcount.Unconstraint, log_Reports), log_Reports);//検索ヒット数 this.Owner_MemoryApplication.CreateErrorReport("Er:110024;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── #endregion // // gt_EndMethod: log_Method.EndMethod(log_Reports); return(""); }
//──────────────────────────────────────── protected void Execute6_Sub( Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_Functions.Name_Library, this, "Execute6_Sub", log_Reports); string sFncName0; this.TrySelectAttribute(out sFncName0, PmNames.S_NAME.Name_Pm, EnumHitcount.One_Or_Zero, log_Reports); if (log_Reports.CanStopwatch) { log_Method.Log_Stopwatch.Message = "Nアクション[" + sFncName0 + "]実行"; log_Method.Log_Stopwatch.Begin(); } // // // // 指定された引数から、または、 // この<action>要素を含んでいる control要素から、コントロールの名前を取得。 List <Usercontrol> list_FcUc = new List <Usercontrol>(); if (log_Reports.Successful) { // 正常時 Expression_Node_String ec_FcName_Prm; this.TrySelectAttribute(out ec_FcName_Prm, Expression_Node_Function36Impl.PM_CONTROL_NAME, EnumHitcount.One_Or_Zero, log_Reports); string sFcName_Prm = ec_FcName_Prm.Execute4_OnExpressionString(EnumHitcount.Unconstraint, log_Reports); List <Expression_Node_String> ecList_FcName = new List <Expression_Node_String>(); if ("" == sFcName_Prm) { // // fcName未設定時は、この<action>要素を含んでいるcontrol要素から // コントロールの名前を取得。 // Configuration_Node cf_Event = this.Cur_Configuration.GetParentByNodename( NamesNode.S_EVENT, EnumConfiguration.Unknown, false, log_Reports); if (null != cf_Event) { Configuration_Node owner_Configurationtree_Control = cf_Event.GetParentByNodename( NamesNode.S_CONTROL1, EnumConfiguration.Tree, true, log_Reports); if (null != owner_Configurationtree_Control) { string sName; bool bHit = ((Configurationtree_Node)owner_Configurationtree_Control).Dictionary_Attribute.TryGetValue(PmNames.S_NAME, out sName, false, log_Reports); if (bHit) { Expression_Node_StringImpl ec_Str = new Expression_Node_StringImpl(this, this.Cur_Configuration); ec_Str.AppendTextNode( sName, this.Cur_Configuration, log_Reports ); // 上書き ec_FcName_Prm = ec_Str; ecList_FcName.Add(ec_FcName_Prm); } else { } } else { //nFcName_prm = null; } } else { //nFcName_prm = null; } } else { // // fcName 指定時。 // カンマ区切りか確認。 CsvTo_ListImpl csvTo = new CsvTo_ListImpl(); List <string> sList_FcName_Prm = csvTo.Read(sFcName_Prm); foreach (string sFcName2 in sList_FcName_Prm) { // コントロール名。 Expression_Node_StringImpl ec_FcName4 = new Expression_Node_StringImpl(this, this.Cur_Configuration); ec_FcName4.AppendTextNode( sFcName2, this.Cur_Configuration, log_Reports ); ecList_FcName.Add(ec_FcName4); } } foreach (Expression_Node_String ec_FcName5 in ecList_FcName) { // // 指定のコントロール // List <Usercontrol> list_FcUc2 = this.Owner_MemoryApplication.MemoryForms.GetUsercontrolsByName( ec_FcName5, true, log_Reports ); if (0 < list_FcUc2.Count) { Usercontrol fcUc = list_FcUc2[0]; list_FcUc.Add(fcUc); } } } else { } foreach (Usercontrol fcUc in list_FcUc) { if (log_Reports.Successful) { //// //// 妥当性判定を行います。 //// //if (log_Reports.Successful) //{ // fcUc.JudgeValidity( // log_Reports // ); // //.WriteLine(this.GetType().Name + "#: ◆ 妥当性判定を行った。"); //} if (fcUc.ControlCommon.BAutomaticinputting) { // コンピューターにより自動入力されたとき。 } else { // 手入力による更新。 { ToMemory_Performer toM = new ExpressionDataTargetUpdaterImpl(); toM.ToMemory( "",// 空文字列 fcUc.ControlCommon.Expression_Control, fcUc.ControlCommon.Owner_MemoryApplication, log_Reports ); } } } } log_Method.EndMethod(log_Reports); }
//──────────────────────────────────────── public void Translate( Configurationtree_Node cur_Cf,//<a-select-record> Expressionv_3FListboxValidationImpl parent_Exprv, MemoryApplication memoryApplication, Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog, Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_ConfigurationtreeToExpression.Name_Library, this, "SToE", log_Reports); if (log_Method.CanDebug(1)) { pg_ParsingLog.Increment("(36)" + cur_Cf.Name); } // // // // // // // // 自 // // // Expressionv_4ASelectRecordImpl cur_Exprv = new Expressionv_4ASelectRecordImpl(parent_Exprv, cur_Cf, memoryApplication); // // // // 属性 // // // { { PmName pmName = PmNames.S_FIELD_KEY; if (cur_Cf.Dictionary_Attribute.ContainsKey(pmName.Name_Pm)) { string sValue; cur_Cf.Dictionary_Attribute.TryGetValue(pmName, out sValue, true, log_Reports); Expression_Node_StringImpl ec_Str = new Expression_Node_StringImpl(parent_Exprv, cur_Cf); ec_Str.AppendTextNode( sValue, cur_Cf, log_Reports ); cur_Exprv.Expression_Field = ec_Str; } } { PmName pmName = PmNames.S_VALUE_KEY; if (cur_Cf.Dictionary_Attribute.ContainsKey(pmName.Name_Pm)) { string sValue; cur_Cf.Dictionary_Attribute.TryGetValue(pmName, out sValue, true, log_Reports); Expression_Node_StringImpl ec_Str = new Expression_Node_StringImpl(parent_Exprv, cur_Cf); ec_Str.AppendTextNode( sValue, cur_Cf, log_Reports ); cur_Exprv.Expression_LookupVal = ec_Str; } } { PmName pmName = PmNames.S_REQUIRED; if (cur_Cf.Dictionary_Attribute.ContainsKey(pmName.Name_Pm)) { string sValue; cur_Cf.Dictionary_Attribute.TryGetValue(pmName, out sValue, true, log_Reports); Expression_Node_StringImpl ec_Str = new Expression_Node_StringImpl(parent_Exprv, cur_Cf); ec_Str.AppendTextNode( sValue, cur_Cf, log_Reports ); cur_Exprv.Expression_Required = ec_Str; } } { PmName pmName = PmNames.S_FROM; if (cur_Cf.Dictionary_Attribute.ContainsKey(pmName.Name_Pm)) { string sValue; cur_Cf.Dictionary_Attribute.TryGetValue(pmName, out sValue, true, log_Reports); Expression_Node_StringImpl ec_Str = new Expression_Node_StringImpl(parent_Exprv, cur_Cf); ec_Str.AppendTextNode( sValue, cur_Cf, log_Reports ); cur_Exprv.Expression_From = ec_Str; } } { PmName pmName = PmNames.S_STORAGE; if (cur_Cf.Dictionary_Attribute.ContainsKey(pmName.Name_Pm)) { string sValue; cur_Cf.Dictionary_Attribute.TryGetValue(pmName, out sValue, true, log_Reports); Expression_Node_StringImpl ec_Str = new Expression_Node_StringImpl(parent_Exprv, cur_Cf); ec_Str.AppendTextNode( sValue, cur_Cf, log_Reports ); cur_Exprv.Expression_Storage = ec_Str; } } { PmName pmName = PmNames.S_DESCRIPTION; if (cur_Cf.Dictionary_Attribute.ContainsKey(pmName.Name_Pm)) { string sValue; cur_Cf.Dictionary_Attribute.TryGetValue(pmName, out sValue, true, log_Reports); Expression_Node_StringImpl ec_Str = new Expression_Node_StringImpl(parent_Exprv, cur_Cf); ec_Str.AppendTextNode( sValue, cur_Cf, log_Reports ); cur_Exprv.Expression_Description = ec_Str; } } }//属性 // // // // 親へ連結 // // // parent_Exprv.List_Expressionv_ASelectRecord.Add(cur_Exprv);//.Add(nA66, EnumHitcount.Unconstraint, log_Reports); // // // // 子 // // // { // <f-cell>要素のリスト this.ParseChild_InConfigurationtreeToExpression( cur_Cf, cur_Exprv, memoryApplication, pg_ParsingLog, log_Reports ); } goto gt_EndMethod; // // // // gt_EndMethod: if (Log_ReportsImpl.BDebugmode_Static) { pg_ParsingLog.Decrement(cur_Cf.Name); } log_Method.EndMethod(log_Reports); }
//──────────────────────────────────────── public override void Translate( Configurationtree_Node cur_Cf, Expression_Node_String parent_Ec, MemoryApplication memoryApplication, Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog, Log_Reports log_Reports ) { // throw new Exception(Info_SToE.LibraryName + ":" + this.GetType().Name + "#SToE: このメソッドは廃止方針です。"); Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_ConfigurationtreeToExpression.Name_Library, this, "SToE", log_Reports); if (log_Method.CanDebug(1)) { pg_ParsingLog.Increment("(18)" + cur_Cf.Name); } // // // // // // // // 自 // // // Expression_Node_String ec_Value; { ec_Value = new Expression_Node_StringImpl(parent_Ec, cur_Cf); ec_Value.AppendTextNode( cur_Cf.Name, cur_Cf, log_Reports ); } // // // // 自 // // // Expression_Node_StringImpl ec_Ap1p = new Expression_Node_StringImpl(parent_Ec, cur_Cf); ec_Ap1p.SetAttribute( PmNames.S_NAME.Name_Pm, ec_Value, log_Reports ); StringBuilder sb = new StringBuilder(); sb.Append("p"); sb.Append(this.NP1p); sb.Append("p"); // // // // 属性 // // // parent_Ec.SetAttribute( sb.ToString(), ((Expression_Node_String)ec_Ap1p), log_Reports ); // // 子要素 // this.ParseChild_InConfigurationtreeToExpression( cur_Cf, ec_Ap1p, memoryApplication, pg_ParsingLog, log_Reports ); goto gt_EndMethod; // // // // gt_EndMethod: if (Log_ReportsImpl.BDebugmode_Static) { pg_ParsingLog.Decrement(cur_Cf.Name); } log_Method.EndMethod(log_Reports); }
//──────────────────────────────────────── protected void Execute6_Sub( Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_Functions.Name_Library, this, "Execute6_Sub", log_Reports); string sFncName0; this.TrySelectAttribute(out sFncName0, PmNames.S_NAME.Name_Pm, EnumHitcount.One_Or_Zero, log_Reports); if (log_Reports.CanStopwatch) { log_Method.Log_Stopwatch.Message = "Nアクション[" + sFncName0 + "]実行"; log_Method.Log_Stopwatch.Begin(); } // // 指定された引数から、または、 // このNAction29要素を含んでいる control要素から、コントロールの名前を取得。 List <Usercontrol> list_Usercontrol; if (log_Reports.Successful) { // 正常時 Expression_Node_String ec_Name_Control; // // コントロール名が指定されていれば、そのコントロール名。 // this.TrySelectAttribute(out ec_Name_Control, Expression_Node_Function29Impl.PM_NAME_CONTROL, EnumHitcount.One_Or_Zero, log_Reports); string sName_Control = ec_Name_Control.Execute4_OnExpressionString(EnumHitcount.Unconstraint, log_Reports); if ("" == sName_Control.Trim()) { //コントロール名が指定されていない場合。 // // ・このシステム関数を含んでいるイベント要素→コントロール要素と辿り、コントロール名を取得。 Configuration_Node cf_Event = this.Cur_Configuration.GetParentByNodename( NamesNode.S_EVENT, EnumConfiguration.Unknown, false, log_Reports); if (null != cf_Event) { Configuration_Node owner_Configuration_Control = cf_Event.GetParentByNodename( NamesNode.S_CONTROL1, EnumConfiguration.Tree, true, log_Reports); if (null != (Configurationtree_Node)owner_Configuration_Control) { bool bHit = ((Configurationtree_Node)owner_Configuration_Control).Dictionary_Attribute.TryGetValue(PmNames.S_NAME, out sName_Control, false, log_Reports); if (bHit) { ec_Name_Control = new Expression_Node_StringImpl(this, this.Cur_Configuration); ec_Name_Control.AppendTextNode( sName_Control, this.Cur_Configuration, log_Reports ); } } else { //nFcName_prm = null; } } else { //nFcName_prm = null; } } // // 指定のコントロール // list_Usercontrol = this.Owner_MemoryApplication.MemoryForms.GetUsercontrolsByName( ec_Name_Control, true, log_Reports ); } else { list_Usercontrol = new List <Usercontrol>(); } // // 妥当性判定を行います。 // if (log_Reports.Successful) { if (0 < list_Usercontrol.Count) { Usercontrol uct = list_Usercontrol[0]; uct.JudgeValidity(log_Reports); } //.WriteLine(this.GetType().Name + "#: ◆ 妥当性判定を行った。"); } if (log_Reports.Successful) { // // 指定のコントロールの内容を、データ・ソースから読取り直して最新表示します。 // if (0 < list_Usercontrol.Count) { Usercontrol uct = list_Usercontrol[0]; //.WriteLine(this.GetType().Name + "#: ◆ 指定のコントロールに、データのアップデートを指示。"); if (uct.ControlCommon.BAutomaticinputting) { // コンピューターにより自動入力されたとき。 //essageBox.Show("コンピュータによって自動入力されました。 コントロールID=[" + this.FormObjectId + "]", "デバッグ"); } else { // 手入力による更新。 uct.UsercontrolToMemory(log_Reports); } } //.WriteLine(this.GetType().Name + "#: ◆ 指示終了。"); } // // log_Method.EndMethod(log_Reports); }