// selectedKamokuRow=nullの場合は新規作成 public void ShowPopup(System.Windows.Forms.Form owner, models.db.Row selectedKamokuRow, models.db.vtables.BufferedMTKanjouKamoku table) { bufferedKanjouKamokuTable = table; kanjouKamokuRow = CreateKanjouKamokuDetailRow(owner, selectedKamokuRow); if (kanjouKamokuRow == null) { return; } if (popup != null) { popup.Close(); popup = null; } popup = new views.popup.KanjouKamokuDetailPopup(); popup.PopupClosed += delegate() { popup = null; hojoKamokuGridController = null; bufferedHojoKamokuTable = null; }; popup.CloseButtonClicked += delegate() { this.ClosePopup(); }; popup.AddSubButtonClicked += delegate(object sender) { var row = sender as views.grid.HojoKamokuRow; bufferedHojoKamokuTable.Update(row.RowData); models.db.Row rowData = Context.KaikeiDatabase.MTKanjouKamoku.NewRow(); rowData.Set("usable", true); rowData.Set("editable", true); rowData.Set("denpyou_print_target", false); rowData.Set("parent_id", row.RowData.GetLong("id", -1)); rowData.Set("kamoku_code", "" + (bufferedHojoKamokuTable.MaxCode() + 1)); int insertedRowNo = bufferedHojoKamokuTable.InsertChildKamoku(rowData); hojoKamokuGridController.SetQuery(""); hojoKamokuGridController.SetFocus(insertedRowNo, null); }; popup.FormClosing += delegate(object sender, System.Windows.Forms.FormClosingEventArgs e) { Dictionary <string, bool> codeHash = new Dictionary <string, bool>(); int rowCt = 0; foreach (var row in bufferedHojoKamokuTable.Select("")) { string code = row.GetStr("kamoku_code"); if (codeHash.ContainsKey(code)) { helper.MsgBox.Err(KaikeiSystemBody.Properties.Resources.MsgDuplicatedKamokuCode); hojoKamokuGridController.SetFocus(rowCt, "kamoku_code"); e.Cancel = true; return; } codeHash[code] = true; rowCt++; } e.Cancel = false; }; bufferedHojoKamokuTable = new models.db.vtables.BufferedMTKanjouKamoku(Context.KaikeiDatabase); bufferedHojoKamokuTable.RootId = (int)kanjouKamokuRow.GetLong("id", -1); bufferedHojoKamokuTable.Recursive = true; bufferedHojoKamokuTable.SyncRowList(); hojoKamokuGridController = new grid.DBPanelGridController <views.grid.HojoKamokuRow>(popup.Grid, true); hojoKamokuGridController.SetTable(bufferedHojoKamokuTable); hojoKamokuGridController.InitInsertedRow += delegate(models.db.Row row) { row.Set("usable", true); row.Set("editable", true); row.Set("denpyou_print_target", true); row.Set("parent_id", (int)kanjouKamokuRow.GetLong("id", -1)); row.Set("kamoku_code", "" + (bufferedHojoKamokuTable.MaxCode() + 1)); }; hojoKamokuGridController.ValidateColumnValue += delegate(views.grid.HojoKamokuRow row, string column, object value) { if (column == "kamoku") { if (row.RowData.GetLong("shikin_kamoku_kubun_id", -1) != -1) { row.RowData.Set("shikin_kamoku_kubun", value); } if (row.RowData.GetLong("jigyou_kamoku_kubun_id", -1) != -1) { row.RowData.Set("jigyou_kamoku_kubun", value); } if (row.RowData.GetLong("taisyaku_kamoku_kubun_id", -1) != -1) { row.RowData.Set("taisyaku_kamoku_kubun", value); } } }; hojoKamokuGridController.ValidateRemoveRow += delegate(views.grid.HojoKamokuRow row) { if ((row.RowData.Table.OwnerDB as models.db.KaikeiDatabase).KaikeiDenpyouMeisai.IsUsedKanjouKamoku(row.RowData.GetId())) { helper.MsgBox.Err(Properties.Resources.MsgUsedKamokuCanNotDelete); return(false); } return(true); }; hojoKamokuGridController.SetQuery(""); popup.KanjouKamokuDetailRow.SetMasterTables(Context.KaikeiDatabase); popup.KanjouKamokuDetailRow.SetRowData(kanjouKamokuRow, false); popup.KanjouKamokuDetailRow.Column_UpdateValueAction += DetailRowColumn_UpdateValue; popup.KanjouKamokuDetailRow.DeleteButtonClicked += DetailRowDeleteButtonClicked; popup.StartPosition = System.Windows.Forms.FormStartPosition.Manual; popup.Location = new System.Drawing.Point( owner.Location.X + (owner.Size.Width - popup.Size.Width) / 2, owner.Location.Y + (owner.Size.Height - popup.Size.Height) / 2 ); popup.ShowDialog(owner); }
public KanjouKamokuDetailPopupController() { popup = null; bufferedHojoKamokuTable = null; kanjouKamokuRow = null; }