示例#1
0
        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;
            }
        }
示例#2
0
        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);
             }
         }
     }
 }
示例#4
0
        /// <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();
                }
            }
        }
示例#6
0
        /// <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);
            }
        }
示例#7
0
        private void  除ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            HCRichData vTopData = FEmrView.ActiveSectionTopLevelData() as HCRichData;

            FEmrView.DeleteActiveDataItems(vTopData.SelectInfo.StartItemNo);
        }