/// <summary> /// 检查数据是否有效 /// </summary> public void CheckDataValid() { string requestReloadID = dataManager.RequestReloadID; if (requestReloadID != "") { DialogResult result = MessageBox.Show("发现绘图部分数据在程序外发生改变,需要重新编辑更新!", "数据一致性检查", MessageBoxButtons.OKCancel, MessageBoxIcon.Information); if (result == DialogResult.OK) { string[] idArray = requestReloadID.Split(new char[] { ',' }); Hashtable argTable = new Hashtable(); argTable["globe_args"] = dataManager.GlobeArgs; argTable["requestReloadID"] = ""; argTable["forceReload"] = "1"; foreach (string id in idArray) { GraphElement graphElement = dataManager.FindGraphElementByID(int.Parse(id)); if (graphElement != null) { DataElement dataElement = dataManager.FindDataElementByID(int.Parse(id)); dataElement.ReloadData(argTable); graphManager.SelectGraphElement(graphElement, true); graphManager.EditDataElement(graphElement); } } } } }
/// <summary> /// 查看子绘图结点 /// </summary> /// <param name="sender">事件发送者</param> /// <param name="e">事件参数</param> private void bViewNode_Click(object sender, EventArgs e) { if (diagramInfoView.SelectedCells.Count > 0) { DataGridViewRow currentRow = diagramInfoView.SelectedCells[0].OwningRow; string chartID = currentRow.Tag as string; string nodeID = currentRow.Cells["NodeID"].Value as string; DocumentManager documentManager = DocumentManager.GetDocumentManager(); documentManager.OpenDiagram(chartID); GraphManager graphManager = documentManager.CurrentFlowChartManager.CurrentGraphManager; DataManager dataManager = documentManager.CurrentFlowChartManager.CurrentDataManager; GraphElement graphElement = dataManager.FindGraphElementByID(int.Parse(nodeID)); graphManager.SelectGraphElement(graphElement, true); this.Focus(); } else { MessageBox.Show("请先选择要查看的子绘图!", "查看绘图", MessageBoxButtons.OK, MessageBoxIcon.Information); } }
/// <summary> /// 编辑图元 /// </summary> /// <param name="flowChartManager">绘图管理器</param> /// <param name="logicData">逻辑数据</param> /// <returns>是否操作成功</returns> protected virtual bool LogicEdit(FlowChartManager flowChartManager, object logicData) { bool executeResult = true; GraphManager graphManager = flowChartManager.CurrentGraphManager; DataManager dataManager = flowChartManager.CurrentDataManager; DocumentManager documentManager = DocumentManager.GetDocumentManager(); GraphElement graphElement = logicData as GraphElement; DataElement dataElement = dataManager.GetDataElement(graphElement); object data = dataManager.GetData(graphElement); Hashtable information = new Hashtable(); information["data"] = data; information["prev_data"] = dataManager.GetPreviousData(graphElement); information["next_data"] = dataManager.GetNextData(graphElement); information["neighbor_data"] = dataManager.GetNeighborData(graphElement); information["globe_args"] = dataManager.GlobeArgs; information["flowchart_name"] = flowChartManager.Name; information["map_name"] = flowChartManager.MapName; information["client_dir"] = Helper.GetHelper().OutputDir; dataElement.PrintInformation = new DataElement.PrintInfo(documentManager.PrintText); try { executeResult = dataElement.EditData(information); } catch (Exception ex) { executeResult = false; MessageBox.Show("当前图元由于以下原因无法编辑:\n\n" + ex.Message, "图元编辑", MessageBoxButtons.OK, MessageBoxIcon.Information); } if (executeResult) // 保存图元数据 { Hashtable previousDataTable = information["prev_data"] as Hashtable; Hashtable nextDataTable = information["next_data"] as Hashtable; GraphElement currentGraphElement; DataElement editDataElement; // 检查是否需要更新图元和数据元的数据 foreach (string id in previousDataTable.Keys) { editDataElement = previousDataTable[id] as DataElement; if (editDataElement != null && editDataElement.Data == null) { currentGraphElement = dataManager.FindGraphElementByID(int.Parse(id)); currentGraphElement.Text = editDataElement.Text; currentGraphElement.TooltipText = editDataElement.TooltipText; currentGraphElement.ShowText = false; } } foreach (string id in nextDataTable.Keys) { editDataElement = nextDataTable[id] as DataElement; if (editDataElement != null && editDataElement.Data == null) { currentGraphElement = dataManager.FindGraphElementByID(int.Parse(id)); currentGraphElement.Text = editDataElement.Text; currentGraphElement.TooltipText = editDataElement.TooltipText; currentGraphElement.ShowText = false; } } graphElement.TooltipText = dataElement.TooltipText; graphElement.Text = dataElement.Text; if (string.IsNullOrEmpty(dataElement.Text)) { graphElement.ShowText = false; } else { graphElement.ShowText = true; } // 调整文本 if (graphElement is SlotContainer) { SlotContainer slotContainer = graphElement as SlotContainer; slotContainer.AdjustText(); // 根据文本内容调整插槽容器的大小 slotContainer.AdjustElementSize(); } else if (graphElement is ConnectorContainer) { ConnectorContainer line = graphElement as ConnectorContainer; line.AdjustText(); } } return(executeResult); }