private void mniInsertImage_Click(object sender, EventArgs e) { OpenFileDialog vOpenDlg = new OpenFileDialog(); vOpenDlg.Filter = "图像文件|*.bmp; *.jpg; *.jpeg; *.png|Windows Bitmap|*.bmp|JPEG 文件|*.jpg; *.jpge|可移植网络图形|*.png"; FEmrView.Enabled = false; try { if (vOpenDlg.ShowDialog() == System.Windows.Forms.DialogResult.OK) { if (vOpenDlg.FileName != "") { HCRichData vTopData = FEmrView.ActiveSectionTopLevelData() as HCRichData; HCImageItem vImageItem = new HCImageItem(vTopData); vImageItem.LoadFromBmpFile(vOpenDlg.FileName); vImageItem.RestrainSize(vTopData.Width, vImageItem.Height); Application.DoEvents(); FEmrView.InsertItem(vImageItem); } } } finally { FEmrView.Enabled = true; } }
private void mniInsertTable_Click(object sender, EventArgs e) { frmInsertTable vFrmInsertTable = new frmInsertTable(); vFrmInsertTable.ShowDialog(); if (vFrmInsertTable.DialogResult == System.Windows.Forms.DialogResult.OK) { HCRichData vTopData = FEmrView.ActiveSectionTopLevelData() as HCRichData; DeTable vTable = new DeTable(vTopData, vFrmInsertTable.RowCount, vFrmInsertTable.ColCount, vTopData.Width); FEmrView.InsertItem(vTable); } }
private void 图片ToolStripMenuItem_Click(object sender, EventArgs e) { using (OpenFileDialog vOpenDlg = new OpenFileDialog()) { vOpenDlg.Filter = "图像文件|*.bmp; *.jpg; *.jpeg; *.png|Windows Bitmap|*.bmp|JPEG 文件|*.jpg; *.jpge|可移植网络图形|*.png"; if (vOpenDlg.ShowDialog() == System.Windows.Forms.DialogResult.OK) { if (vOpenDlg.FileName != "") { HCRichData vTopData = FHCView.ActiveSectionTopLevelData() as HCRichData; HCImageItem vImageItem = new HCImageItem(vTopData); vImageItem.LoadGraphicFile(vOpenDlg.FileName); vImageItem.RestrainSize(vTopData.Width, vImageItem.Height); Application.DoEvents(); FHCView.InsertItem(vImageItem); } } } }
/// <summary> 直接设置当前数据元的值为扩展内容 </summary> /// <param name="aStream">扩展内容流</param> public void SetActiveItemExtra(Stream aStream) { string vFileFormat = ""; ushort vFileVersion = 0; byte vLang = 0; HC.View.HC._LoadFileFormatAndVersion(aStream, ref vFileFormat, ref vFileVersion, ref vLang); HCStyle vStyle = new HCStyle(); try { vStyle.LoadFromStream(aStream, vFileVersion); this.BeginUpdate(); try { this.UndoGroupBegin(); try { HCRichData vTopData = this.ActiveSectionTopLevelData() as HCRichData; this.DeleteActiveDataItems(vTopData.SelectInfo.StartItemNo); ActiveSection.InsertStream(aStream, vStyle, vFileVersion); } finally { this.UndoGroupEnd(); } } finally { this.EndUpdate(); } } finally { vStyle.Dispose(); } }
public void SetHCView(HCView aHCView) { FHCView = aHCView; HCRichData vData = FHCView.ActiveSection.ActiveData; DeTable vTable = vData.GetActiveItem() as DeTable; // 表格 tbxCellHPadding.Text = vTable.CellHPadding.ToString(); tbxCellVPadding.Text = vTable.CellVPadding.ToString(); cbxBorderVisible.Checked = vTable.BorderVisible; tbxBorderWidth.Text = vTable.BorderWidth.ToString(); tbxFixRowFirst.Text = (vTable.FixRow + 1).ToString(); tbxFixRowLast.Text = (vTable.FixRow + vTable.FixRowCount).ToString(); tbxFixColFirst.Text = (vTable.FixCol + 1).ToString(); tbxFixColLast.Text = (vTable.FixCol + vTable.FixColCount).ToString(); // 行 if (vTable.SelectCellRang.StartRow >= 0) { tabRow.Text = "行(" + (vTable.SelectCellRang.StartRow + 1).ToString() + ")"; if (vTable.SelectCellRang.EndRow > 0) { tabRow.Text += " - (" + (vTable.SelectCellRang.EndRow + 1).ToString() + ")"; } tbxRowHeight.Text = vTable.Rows[vTable.SelectCellRang.StartRow].Height.ToString(); // 行高 } else { tabTableInfo.TabPages.Remove(tabRow); } // 单元格 if ((vTable.SelectCellRang.StartRow >= 0) && (vTable.SelectCellRang.StartCol >= 0)) { HCAlignVert vAlignVer = HCAlignVert.cavTop; if (vTable.SelectCellRang.EndRow >= 0) // 多选 { vAlignVer = vTable[vTable.SelectCellRang.StartRow, vTable.SelectCellRang.StartCol].AlignVert; tabCell.Text = "单元格(" + (vTable.SelectCellRang.StartRow + 1).ToString() + "," + (vTable.SelectCellRang.StartCol + 1).ToString() + ") - (" + (vTable.SelectCellRang.EndRow + 1).ToString() + "," + (vTable.SelectCellRang.EndCol + 1).ToString() + ")"; } else { vAlignVer = vTable.GetEditCell().AlignVert; tabCell.Text = "单元格(" + (vTable.SelectCellRang.StartRow + 1).ToString() + "," + (vTable.SelectCellRang.StartCol + 1).ToString() + ")"; } cbbCellAlignVert.SelectedIndex = (int)vAlignVer; } else { tabTableInfo.TabPages.Remove(tabCell); } dgvTable.RowCount = vTable.Propertys.Count + 1; if (vTable.Propertys.Count > 0) { int vRow = 0; foreach (KeyValuePair <string, string> keyValuePair in vTable.Propertys) { dgvTable.Rows[vRow].Cells[0].Value = keyValuePair.Key; dgvTable.Rows[vRow].Cells[1].Value = keyValuePair.Value; vRow++; } } this.ShowDialog(); if (this.DialogResult == System.Windows.Forms.DialogResult.OK) { FHCView.BeginUpdate(); try { // 表格 vTable.CellHPadding = byte.Parse(tbxCellHPadding.Text); vTable.CellVPadding = byte.Parse(tbxCellVPadding.Text); vTable.BorderWidth = byte.Parse(tbxBorderWidth.Text); vTable.BorderVisible = cbxBorderVisible.Checked; vTable.FixRow = (sbyte)(int.Parse(tbxFixRowFirst.Text, 0) - 1); vTable.FixRowCount = (byte)(int.Parse(tbxFixRowLast.Text, 0) - vTable.FixRow); vTable.FixCol = (sbyte)(int.Parse(tbxFixColFirst.Text, 0) - 1); vTable.FixColCount = (byte)(int.Parse(tbxFixColLast.Text, 0) - vTable.FixCol); // 行 if (vTable.SelectCellRang.StartRow >= 0) { int viValue = int.Parse(tbxRowHeight.Text); if (vTable.SelectCellRang.EndRow > 0) { for (int vR = vTable.SelectCellRang.StartRow; vR <= vTable.SelectCellRang.EndRow; vR++) { vTable.Rows[vR].Height = viValue; } } else { vTable.Rows[vTable.SelectCellRang.StartRow].Height = viValue; } } // 单元格 if ((vTable.SelectCellRang.StartRow >= 0) && (vTable.SelectCellRang.StartCol >= 0)) { if (vTable.SelectCellRang.EndCol > 0) { for (int vR = vTable.SelectCellRang.StartRow; vR <= vTable.SelectCellRang.EndRow; vR++) { for (int vC = vTable.SelectCellRang.StartCol; vC <= vTable.SelectCellRang.EndCol; vC++) { vTable[vR, vC].AlignVert = (HCAlignVert)cbbCellAlignVert.SelectedIndex; } } } else { vTable.GetEditCell().AlignVert = (HCAlignVert)cbbCellAlignVert.SelectedIndex; } } vTable.Propertys.Clear(); string vsValue = ""; for (int i = 0; i < dgvTable.RowCount; i++) { if (dgvTable.Rows[i].Cells[0].Value == null) { continue; } if (dgvTable.Rows[i].Cells[1].Value == null) { vsValue = ""; } else { vsValue = dgvTable.Rows[i].Cells[1].Value.ToString(); } if (dgvTable.Rows[i].Cells[0].Value.ToString().Trim() != "") { vTable.Propertys.Add(dgvTable.Rows[i].Cells[0].Value.ToString(), vsValue); } } if (FReFormat) { FHCView.ActiveSection.ReFormatActiveItem(); } } finally { FHCView.EndUpdate(); } } }
/// <summary> 按键按下 </summary> /// <param name="e">按键信息</param> protected override void OnKeyDown(KeyEventArgs e) { if (FTrace) { if (HC.View.HC.IsKeyDownEdit(e.KeyValue)) { string vText = ""; string vCurTrace = ""; int vStyleNo = HCStyle.Null; int vParaNo = HCStyle.Null; StyleExtra vCurStyleEx = StyleExtra.cseNone; HCRichData vData = this.ActiveSectionTopLevelData() as HCRichData; if (vData.SelectExists()) { this.DisSelect(); return; } if (vData.SelectInfo.StartItemNo < 0) { return; } if (vData.Items[vData.SelectInfo.StartItemNo].StyleNo < HCStyle.Null) { base.OnKeyDown(e); return; } // 取光标处的文本 if (e.KeyCode == Keys.Back) // 回删 { if ((vData.SelectInfo.StartItemNo == 0) && (vData.SelectInfo.StartItemOffset == 0)) // 第一个最前面则不处理 { return; } else // 不是第一个最前面 if (vData.SelectInfo.StartItemOffset == 0) // 最前面,移动到前一个最后面处理 { if (vData.Items[vData.SelectInfo.StartItemNo].Text != "") // 当前行不是空行 { vData.SelectInfo.StartItemNo = vData.SelectInfo.StartItemNo - 1; vData.SelectInfo.StartItemOffset = vData.Items[vData.SelectInfo.StartItemNo].Length; this.OnKeyDown(e); } else // 空行不留痕直接默认处理 { base.OnKeyDown(e); } return; } else // 不是第一个Item,也不是在Item最前面 if (vData.Items[vData.SelectInfo.StartItemNo] is DeItem) // 文本 { DeItem vDeItem = vData.Items[vData.SelectInfo.StartItemNo] as DeItem; vText = vDeItem.SubString(vData.SelectInfo.StartItemOffset, 1); vStyleNo = vDeItem.StyleNo; vParaNo = vDeItem.ParaNo; vCurStyleEx = vDeItem.StyleEx; vCurTrace = vDeItem[DeProp.Trace]; } } else if (e.KeyCode == Keys.Delete) // 后删 { if ((vData.SelectInfo.StartItemNo == vData.Items.Count - 1) && (vData.SelectInfo.StartItemOffset == vData.Items[vData.Items.Count - 1].Length)) { return; // 最后一个最后面则不处理 } else if (vData.SelectInfo.StartItemOffset == vData.Items[vData.SelectInfo.StartItemNo].Length) // 最后面,移动到后一个最前面处理 { vData.SelectInfo.StartItemNo = vData.SelectInfo.StartItemNo + 1; vData.SelectInfo.StartItemOffset = 0; this.OnKeyDown(e); return; } else // 不是最后一个Item,也不是在Item最后面 if (vData.Items[vData.SelectInfo.StartItemNo] is DeItem) // 文本 { DeItem vDeItem = vData.Items[vData.SelectInfo.StartItemNo] as DeItem; vText = vDeItem.SubString(vData.SelectInfo.StartItemOffset + 1, 1); vStyleNo = vDeItem.StyleNo; vParaNo = vDeItem.ParaNo; vCurStyleEx = vDeItem.StyleEx; vCurTrace = vDeItem[DeProp.Trace]; } } // 删除掉的内容以痕迹的形式插入 this.BeginUpdate(); try { base.OnKeyDown(e); if (FTrace && (vText != "")) // 有删除的内容 { if ((vCurStyleEx == StyleExtra.cseAdd) && (vCurTrace == "")) // 新添加未生效痕迹可以直接删除 { return; } // 创建删除字符对应的Item DeItem vDeItem = new DeItem(); vDeItem.Text = vText; vDeItem.StyleNo = vStyleNo; vDeItem.ParaNo = vParaNo; if ((vCurStyleEx == StyleExtra.cseDel) && (vCurTrace == "")) // 原来是删除未生效痕迹 { vDeItem.StyleEx = StyleExtra.cseNone; // 取消删除痕迹 } else // 生成删除痕迹 { vDeItem.StyleEx = StyleExtra.cseDel; } // 插入删除痕迹Item HCCustomItem vCurItem = vData.Items[vData.SelectInfo.StartItemNo]; if (vData.SelectInfo.StartItemOffset == 0) // 在Item最前面 { if (vDeItem.CanConcatItems(vCurItem)) // 可以合并 { vCurItem.Text = vDeItem.Text + vCurItem.Text; if (e.KeyCode == Keys.Delete) // 后删 { vData.SelectInfo.StartItemOffset = vData.SelectInfo.StartItemOffset + 1; } this.ActiveSection.ReFormatActiveItem(); } else // 不能合并 { vDeItem.ParaFirst = vCurItem.ParaFirst; vCurItem.ParaFirst = false; this.InsertItem(vDeItem); if (e.KeyCode == Keys.Back) // 回删 { vData.SelectInfo.StartItemOffset = vData.SelectInfo.StartItemOffset - 1; } } } else if (vData.SelectInfo.StartItemOffset == vCurItem.Length) // 在Item最后面 { if (vCurItem.CanConcatItems(vDeItem)) // 可以合并 { vCurItem.Text = vCurItem.Text + vDeItem.Text; if (e.KeyCode == Keys.Delete) // 后删 { vData.SelectInfo.StartItemOffset = vData.SelectInfo.StartItemOffset + 1; } this.ActiveSection.ReFormatActiveItem(); } else // 不可以合并 { this.InsertItem(vDeItem); if (e.KeyCode == Keys.Back) // 回删 { vData.SelectInfo.StartItemOffset = vData.SelectInfo.StartItemOffset - 1; } } } else // 在Item中间 { this.InsertItem(vDeItem); if (e.KeyCode == Keys.Back) // 回删 { vData.SelectInfo.StartItemOffset = vData.SelectInfo.StartItemOffset - 1; } } } } finally { this.EndUpdate(); } } else { base.OnKeyDown(e); } } else { base.OnKeyDown(e); } }
private void 除ToolStripMenuItem_Click(object sender, EventArgs e) { HCRichData vTopData = FEmrView.ActiveSectionTopLevelData() as HCRichData; FEmrView.DeleteActiveDataItems(vTopData.SelectInfo.StartItemNo); }