Ejemplo n.º 1
0
        public override void Assign(HCCustomItem source)
        {
            base.Assign(source);
            FStyleEx     = (source as DeItem).StyleEx;
            FEditProtect = (source as DeItem).EditProtect;
            FDeleteAllow = (source as DeItem).DeleteAllow;
            FCopyProtect = (source as DeItem).CopyProtect;
            FAllocValue  = (source as DeItem).AllocValue;
            FOutOfRang   = (source as DeItem).OutOfRang;
            string vS = DeProp.GetPropertyString((source as DeItem).Propertys);

            DeProp.SetPropertyString(vS, FPropertys);
        }
Ejemplo n.º 2
0
        private void DoSyncDeItem(object sender, HCCustomData aData, HCCustomItem aItem)
        {
            if (aItem is DeItem)
            {
                DeItem vDeItem = aItem as DeItem;
                if (vDeItem.IsElement)
                {
                    string vDeIndex = vDeItem[DeProp.Index];
                    if (vDeIndex != "")
                    {
                        DataRow[] vDataRows = FDataElementSetMacro.Select("ObjID=" + vDeIndex);
                        if (vDataRows.Length == 1)  // 有此数据元的替换信息
                        {
                            string vsResult = "";

                            switch (vDataRows[0]["MacroType"].ToString())
                            {
                            case "1":      // 患者信息(客户端处理)
                                vsResult = EMR.GetValueAsString(PatientInfo.FieldByName(vDataRows[0]["Macro"].ToString()));
                                break;

                            case "2":      // 用户信息(客户端处理)
                                vsResult = EMR.GetValueAsString(UserInfo.FieldByName(vDataRows[0]["Macro"].ToString()));
                                break;

                            case "3":      // 病历信息(服务端处理)
                                vsResult = GetDeValueFromStruct(PatientInfo.PatID, int.Parse(vDataRows[0]["Macro"].ToString()), vDeItem[DeProp.Index]);
                                break;

                            case "4":      // 环境信息(服务端,如当前时间等)
                                vsResult = EMR.GetValueAsString(FServerInfo.FieldByName(vDataRows[0]["Macro"].ToString()));
                                break;

                            case "5":      // SQL脚本(服务端处理)
                                vsResult = GetMarcoSqlResult(vDeIndex, vDataRows[0]["Macro"].ToString());
                                break;

                            default:
                                break;
                            }

                            if (vsResult != "")
                            {
                                vDeItem.Text = vsResult;
                            }
                        }
                    }
                }
            }
        }
Ejemplo n.º 3
0
        public override bool CanConcatItems(HCCustomItem aItem)
        {
            bool Result = base.CanConcatItems(aItem);

            if (Result)
            {
                DeItem vDeItem = aItem as DeItem;
                Result = ((this[DeProp.Index] == vDeItem[DeProp.Index]) &&
                          (this.FStyleEx == vDeItem.StyleEx) &&
                          (FEditProtect == vDeItem.FEditProtect) &&
                          (this[DeProp.Trace] == vDeItem[DeProp.Trace]));
            }

            return(Result);
        }
Ejemplo n.º 4
0
        /// <summary> 文档某节的Item绘制完成 </summary>
        /// <param name="AData">当前绘制的Data</param>
        /// <param name="ADrawItemIndex">Item对应的DrawItem序号</param>
        /// <param name="ADrawRect">Item对应的绘制区域</param>
        /// <param name="ADataDrawLeft">Data绘制时的Left</param>
        /// <param name="ADataDrawBottom">Data绘制时的Bottom</param>
        /// <param name="ADataScreenTop">绘制时呈现Data的Top位置</param>
        /// <param name="ADataScreenBottom">绘制时呈现Data的Bottom位置</param>
        /// <param name="ACanvas">画布</param>
        /// <param name="APaintInfo">绘制时的其它信息</param>
        protected override void DoSectionDrawItemPaintAfter(Object sender, HCCustomData aData, int aItemNo, int aDrawItemNo, RECT aDrawRect,
                                                            int aDataDrawLeft, int aDataDrawRight, int aDataDrawBottom, int aDataScreenTop, int aDataScreenBottom, HCCanvas aCanvas, PaintInfo aPaintInfo)
        {
            if ((!FHideTrace) && (FTraceCount > 0))  // 显示痕迹且有痕迹
            {
                HCCustomItem vItem = aData.Items[aItemNo];
                if (vItem.StyleNo > HCStyle.Null)
                {
                    DeItem vDeItem = vItem as DeItem;
                    if (vDeItem.StyleEx != StyleExtra.cseNone)  // 添加批注
                    {
                        HCDrawAnnotateDynamic vDrawAnnotate = new HCDrawAnnotateDynamic();
                        vDrawAnnotate.DrawRect = aDrawRect;
                        vDrawAnnotate.Title    = vDeItem.GetHint();
                        vDrawAnnotate.Text     = aData.GetDrawItemText(aDrawItemNo);

                        this.AnnotatePre.AddDrawAnnotate(vDrawAnnotate);
                    }
                }
            }

            if ((FPageBlankTip != "") && (aData is HCPageData))
            {
                if (aDrawItemNo < aData.DrawItems.Count - 1)
                {
                    if (aData.Items[aData.DrawItems[aDrawItemNo + 1].ItemNo].PageBreak)
                    {
                        DrawBlankTip_(aDataDrawLeft, aDrawRect.Top + aDrawRect.Height + aData.GetLineBlankSpace(aDrawItemNo), aDataDrawRight, aDataDrawBottom, aCanvas);
                    }
                }
                else
                {
                    DrawBlankTip_(aDataDrawLeft, aDrawRect.Top + aDrawRect.Height + aData.GetLineBlankSpace(aDrawItemNo), aDataDrawRight, aDataDrawBottom, aCanvas);
                }
            }

            base.DoSectionDrawItemPaintAfter(sender, aData, aItemNo, aDrawItemNo, aDrawRect, aDataDrawLeft, aDataDrawRight,
                                             aDataDrawBottom, aDataScreenTop, aDataScreenBottom, aCanvas, aPaintInfo);
        }
Ejemplo n.º 5
0
        /// <summary> 文档某节的Item绘制完成 </summary>
        /// <param name="AData">当前绘制的Data</param>
        /// <param name="ADrawItemIndex">Item对应的DrawItem序号</param>
        /// <param name="ADrawRect">Item对应的绘制区域</param>
        /// <param name="ADataDrawLeft">Data绘制时的Left</param>
        /// <param name="ADataDrawBottom">Data绘制时的Bottom</param>
        /// <param name="ADataScreenTop">绘制时呈现Data的Top位置</param>
        /// <param name="ADataScreenBottom">绘制时呈现Data的Bottom位置</param>
        /// <param name="ACanvas">画布</param>
        /// <param name="APaintInfo">绘制时的其它信息</param>
        protected override void DoSectionDrawItemPaintAfter(Object sender, HCCustomData aData, int aDrawItemNo, RECT aDrawRect,
                                                            int aDataDrawLeft, int aDataDrawBottom, int aDataScreenTop, int aDataScreenBottom, HCCanvas aCanvas, PaintInfo aPaintInfo)
        {
            if (FTraceCount > 0)  // 显示批注
            {
                HCCustomItem vItem = aData.Items[aData.DrawItems[aDrawItemNo].ItemNo];
                if (vItem.StyleNo > HCStyle.Null)
                {
                    DeItem vDeItem = vItem as DeItem;
                    if (vDeItem.StyleEx != StyleExtra.cseNone)  // 添加批注
                    {
                        HCDrawAnnotateDynamic vDrawAnnotate = new HCDrawAnnotateDynamic();
                        vDrawAnnotate.DrawRect = aDrawRect;
                        vDrawAnnotate.Title    = vDeItem.GetHint();
                        vDrawAnnotate.Text     = aData.GetDrawItemText(aDrawItemNo);

                        this.AnnotatePre.AddDrawAnnotate(vDrawAnnotate);
                    }
                }
            }

            base.DoSectionDrawItemPaintAfter(sender, aData, aDrawItemNo, aDrawRect, aDataDrawLeft, aDataDrawBottom,
                                             aDataScreenTop, aDataScreenBottom, aCanvas, aPaintInfo);
        }
Ejemplo n.º 6
0
        private void pmHCView_Opening(object sender, CancelEventArgs e)
        {
            if (FHCView.AnnotatePre.ActiveDrawAnnotateIndex >= 0)
            {
                for (int i = 0; i <= pmHCView.Items.Count - 1; i++)
                {
                    pmHCView.Items[i].Visible = false;
                }

                mniModAnnotate.Visible = true;
                mniDelAnnotate.Visible = true;

                return;
            }
            else
            {
                for (int i = 0; i <= pmHCView.Items.Count - 1; i++)
                {
                    pmHCView.Items[i].Visible = true;
                }

                mniModAnnotate.Visible = false;
                mniDelAnnotate.Visible = false;
            }

            HCCustomData vActiveData = FHCView.ActiveSection.ActiveData;
            HCCustomItem vActiveItem = vActiveData.GetActiveItem();

            HCCustomData vTopData = null;
            HCCustomItem vTopItem = vActiveItem;

            while (vTopItem is HCCustomRectItem)
            {
                if ((vTopItem as HCCustomRectItem).GetActiveData() != null)
                {
                    if (vTopData != null)
                    {
                        vActiveData = vTopData;
                        vActiveItem = vTopItem;
                    }

                    vTopData = (vTopItem as HCCustomRectItem).GetTopLevelData();
                    vTopItem = vTopData.GetActiveItem();
                }
                else
                {
                    break;
                }
            }

            if (vTopData == null)
            {
                vTopData = vActiveData;
            }

            mniTable.Enabled = vActiveItem.StyleNo == HCStyle.Table;
            if (mniTable.Enabled)
            {
                HCTableItem vTableItem = vActiveItem as HCTableItem;
                mniInsertRowTop.Enabled    = vTableItem.GetEditCell() != null;
                mniInsertRowBottom.Enabled = mniInsertRowTop.Enabled;
                mniInsertColLeft.Enabled   = mniInsertRowTop.Enabled;
                mniInsertColRight.Enabled  = mniInsertRowTop.Enabled;
                mniSplitRow.Enabled        = mniInsertRowTop.Enabled;
                mniSplitCol.Enabled        = mniInsertRowTop.Enabled;

                mniDeleteCurRow.Enabled = vTableItem.CurRowCanDelete();
                mniDeleteCurCol.Enabled = vTableItem.CurColCanDelete();
                mniMerge.Enabled        = vTableItem.SelectedCellCanMerge();

                if (vTableItem.BorderVisible)
                {
                    mniDisBorder.Text = "隐藏边框";
                }
                else
                {
                    mniDisBorder.Text = "显示边框";
                }
            }

            mniCut.Enabled  = (!FHCView.ActiveSection.ReadOnly && vTopData.SelectExists());
            mniCopy.Enabled = mniCut.Enabled;

            IDataObject vIData = Clipboard.GetDataObject();

            mniPaste.Enabled = ((!FHCView.ActiveSection.ReadOnly) &&
                                ((vIData.GetDataPresent(HC.View.HC.HC_EXT)) ||
                                 (vIData.GetDataPresent(DataFormats.Text)) ||
                                 (vIData.GetDataPresent(DataFormats.Bitmap))
                                ));
            mniControlItem.Visible = ((!FHCView.ActiveSection.ReadOnly) &&
                                      (!vTopData.SelectExists()) &&
                                      (vTopItem is HCControlItem) &&
                                      vTopItem.Active
                                      );
            if (mniControlItem.Visible)
            {
                mniControlItem.Text = "属性(" + (vTopItem as HCControlItem).GetType().Name + ")";
            }
        }
Ejemplo n.º 7
0
 private void DoInsertDeItem(HCEmrView aEmrView, HCSection aSection, HCCustomData aData, HCCustomItem aItem)
 {
     if (aItem is DeCombobox)
     {
         (aItem as DeCombobox).OnPopupItem = DoRecordDeComboboxGetItem;
     }
 }
Ejemplo n.º 8
0
        private void DoEmrEditMouseUp(object sender, MouseEventArgs e)
        {
            string vInfo = "";

            HCCustomItem vActiveItem = FEmrEdit.Data.GetTopLevelItem();

            if (vActiveItem != null)
            {
                if (FEmrEdit.Data.ActiveDomain.BeginNo >= 0)
                {
                    DeGroup vDeGroup = FEmrEdit.Data.Items[FEmrEdit.Data.ActiveDomain.BeginNo] as DeGroup;

                    vInfo = vDeGroup[DeProp.Name];
                }

                if (vActiveItem is DeItem)
                {
                    DeItem vDeItem = vActiveItem as DeItem;
                    if (vDeItem.StyleEx != StyleExtra.cseNone)
                    {
                        vInfo += "-" + vDeItem.GetHint();
                    }
                    else
                    if (vDeItem.Active &&
                        (vDeItem[DeProp.Index] != "") &&
                        (!vDeItem.IsSelectComplate) &&
                        (!vDeItem.IsSelectPart) &&
                        (Environment.TickCount - FMouseDownTick < 500)
                        )
                    {
                        vInfo = vInfo + "元素(" + vDeItem[DeProp.Index] + ")";

                        if (FEmrEdit.Data.ReadOnly)
                        {
                            //tssDeInfo.Text = "";
                            return;
                        }

                        POINT            vPt             = FEmrEdit.Data.GetActiveDrawItemCoord(); // 得到相对EmrEdit的坐标
                        HCCustomDrawItem vActiveDrawItem = FEmrEdit.Data.GetTopLevelDrawItem();
                        RECT             vDrawItemRect   = vActiveDrawItem.Rect;
                        vDrawItemRect = HC.View.HC.Bounds(vPt.X, vPt.Y, vDrawItemRect.Width, vDrawItemRect.Height);

                        if (HC.View.HC.PtInRect(vDrawItemRect, new POINT(e.X, e.Y)))
                        {
                            vPt.Y = vPt.Y + vActiveDrawItem.Height;

                            Point vPoint = new Point(vPt.X, vPt.Y);
                            vPoint = FEmrEdit.PointToScreen(vPoint);

                            //HC.Win32.User.ClientToScreen(FEmrEdit.Handle, ref vPt);
                            vPt.X = vPoint.X;
                            vPt.Y = vPoint.Y;
                            PopupForm().PopupDeItem(vDeItem, vPt);
                        }
                    }
                }
                else
                if (vActiveItem is DeEdit)
                {
                }
                else
                if (vActiveItem is DeCombobox)
                {
                }
                else
                if (vActiveItem is DeDateTimePicker)
                {
                }
            }

            //tssDeInfo.Text = vInfo;
        }
Ejemplo n.º 9
0
        protected override void DoCaretChange()
        {
            base.DoCaretChange();

            if (!FInputHelper.EnableEx)
            {
                return;
            }

            if (!this.Style.UpdateInfo.ReStyle)
            {
                return;
            }

            string vsBefor = "";
            string vsAfter = "";

            HCCustomData vTopData   = this.ActiveSectionTopLevelData();
            int          vCurItemNo = vTopData.SelectInfo.StartItemNo;
            HCCustomItem vCurItem   = vTopData.GetActiveItem();

            if (vCurItem.StyleNo < HCStyle.Null)
            {
                if (vTopData.SelectInfo.StartItemOffset == HC.View.HC.OffsetBefor)
                {
                    GetBeforString(vTopData, vCurItemNo - 1, ref vsBefor);
                }
                else
                {
                    GetAfterString(vTopData, vCurItemNo + 1, ref vsAfter);
                }
            }
            else
            {
                // 取光标前
                string vText = vCurItem.Text;
                if (GetCharBefor(vTopData.SelectInfo.StartItemOffset, ref vText))
                {
                    vsBefor = vText;
                }
                else
                {
                    vsBefor = vText.Substring(0, vTopData.SelectInfo.StartItemOffset);
                    GetBeforString(vTopData, vCurItemNo - 1, ref vsBefor);
                }

                // 取光标后
                vText = vCurItem.Text;
                if (GetCharAfter(vTopData.SelectInfo.StartItemOffset + 1, ref vText))
                {
                    vsAfter = vText;
                }
                else
                {
                    vsAfter = vText.Substring(vTopData.SelectInfo.StartItemOffset + 1 - 1, vText.Length - vTopData.SelectInfo.StartItemOffset);
                    GetAfterString(vTopData, vCurItemNo + 1, ref vsAfter);
                }
            }

            FInputHelper.SetCaretString(vsBefor, vsAfter);
        }
Ejemplo n.º 10
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);
            }
        }
Ejemplo n.º 11
0
        /// <summary> 当节中某Data有Item删除后触发 </summary>
        /// <param name="sender">在哪个文档节删除</param>
        /// <param name="aData">在哪个Data删除</param>
        /// <param name="aItem">已删除的Item</param>
        protected override void DoSectionRemoveItem(object sender, HCCustomData aData, HCCustomItem aItem)
        {
            if (aItem is DeItem)
            {
                DeItem vDeItem = aItem as DeItem;
                vDeItem.OnPaintBKG = DoDeItemPaintBKG;

                if (vDeItem.StyleEx != StyleExtra.cseNone)
                {
                    FTraceCount--;

                    if ((FTraceCount == 0) && (this.AnnotatePre.Visible) && (this.AnnotatePre.Count == 0))
                    {
                        this.AnnotatePre.Visible = false;
                    }
                }
            }

            base.DoSectionRemoveItem(sender, aData, aItem);
        }
Ejemplo n.º 12
0
        /// <summary> 当节某Data有Item插入后触发 </summary>
        /// <param name="sender">在哪个文档节插入</param>
        /// <param name="aData">在哪个Data插入</param>
        /// <param name="aItem">已插入的Item</param>
        protected override void DoSectionInsertItem(object sender, HCCustomData aData, HCCustomItem aItem)
        {
            if (aItem is DeItem)
            {
                DeItem vDeItem = aItem as DeItem;
                vDeItem.OnPaintBKG = DoDeItemPaintBKG;

                if (vDeItem.StyleEx != StyleExtra.cseNone)
                {
                    FTraceCount++;

                    if (!this.AnnotatePre.Visible)
                    {
                        this.AnnotatePre.Visible = true;
                    }
                }

                DoSyncDeItem(sender, aData, vDeItem);
            }

            base.DoSectionInsertItem(sender, aData, aItem);
        }
Ejemplo n.º 13
0
        private void pmView_Opening(object sender, CancelEventArgs e)
        {
            HCCustomData vActiveData = FEmrView.ActiveSection.ActiveData;
            HCCustomItem vActiveItem = vActiveData.GetActiveItem();

            HCCustomData vTopData = null;
            HCCustomItem vTopItem = vActiveItem;

            while (vTopItem is HCCustomRectItem)
            {
                if ((vTopItem as HCCustomRectItem).GetActiveData() != null)
                {
                    if (vTopData != null)
                    {
                        vActiveData = vTopData;
                        vActiveItem = vTopItem;
                    }

                    vTopData = (vTopItem as HCCustomRectItem).GetActiveData();
                    vTopItem = vTopData.GetActiveItem();
                }
                else
                {
                    break;
                }
            }

            if (vTopData == null)
            {
                vTopData = vActiveData;
            }

            mniTable.Enabled = vActiveItem.StyleNo == HCStyle.Table;
            if (mniTable.Enabled)
            {
                DeTable vTable = vActiveItem as DeTable;
                mniInsertRowTop.Enabled    = vTable.GetEditCell() != null;
                mniInsertRowBottom.Enabled = mniInsertRowTop.Enabled;
                mniInsertColLeft.Enabled   = mniInsertRowTop.Enabled;
                mniInsertColRight.Enabled  = mniInsertRowTop.Enabled;
                mniSplitRow.Enabled        = mniInsertRowTop.Enabled;
                mniSplitCol.Enabled        = mniInsertRowTop.Enabled;

                mniDeleteCurRow.Enabled = vTable.CurRowCanDelete();
                mniDeleteCurCol.Enabled = vTable.CurColCanDelete();
                mniMerge.Enabled        = vTable.SelectedCellCanMerge();
            }

            mniCut.Enabled  = (!FEmrView.ActiveSection.ReadOnly) && vTopData.SelectExists();
            mniCopy.Enabled = mniCut.Enabled;

            IDataObject vIData = Clipboard.GetDataObject();

            mniPaste.Enabled = ((!(vTopData as HCRichData).ReadOnly) &&
                                ((vIData.GetDataPresent(HC.View.HC.HC_EXT)) ||
                                 vIData.GetDataPresent(DataFormats.Text) ||
                                 (vIData.GetDataPresent(DataFormats.Bitmap))));

            mniControlItem.Visible = ((!(vTopData as HCRichData).ReadOnly) && (!vTopData.SelectExists()) &&
                                      (vTopItem is HCControlItem) && (vTopItem.Active));
            if (mniControlItem.Visible)
            {
                mniControlItem.Text = "属性(" + (vTopItem as HCControlItem).GetType().Name + ")";
            }

            mniDeItem.Visible        = false;
            mniDeleteProtect.Visible = false;

            if (vTopItem is DeItem)
            {
                if ((vTopItem as DeItem).IsElement)
                {
                    mniDeItem.Visible = true;
                    mniDeItem.Text    = (vTopItem as DeItem)[DeProp.Name];
                }

                if (FEmrView.DesignModeEx)  // 文档设计模式
                {
                    if (vTopData.SelectExists())
                    {
                        mniDeleteProtect.Text    = "只读";
                        mniDeleteProtect.Visible = true;
                    }
                    else
                    if ((vTopItem as DeItem).EditProtect)
                    {
                        mniDeleteProtect.Text    = "取消只读";
                        mniDeleteProtect.Visible = true;
                    }
                }
            }

            if ((vTopData as HCViewData).ActiveDomain.BeginNo >= 0)
            {
                mniDeGroup.Visible = true;
                mniDeGroup.Text    = (vTopData.Items[(vTopData as HCViewData).ActiveDomain.BeginNo] as DeGroup)[DeProp.Name];
            }
            else
            {
                mniDeGroup.Visible = false;
            }

            mniSplit.Visible = mniControlItem.Visible || mniDeItem.Visible || mniDeGroup.Visible;
        }
Ejemplo n.º 14
0
        protected void DoMouseUp(object sender, MouseEventArgs e)
        {
            string vInfo = "";

            if (FEmrView.ActiveSection.ActiveData.ReadOnly)
            {
                tssDeInfo.Text = "";
                return;
            }

            HCCustomItem vActiveItem = FEmrView.GetTopLevelItem();

            if (vActiveItem != null)
            {
                if (FEmrView.ActiveSection.ActiveData.ActiveDomain.BeginNo >= 0)
                {
                    DeGroup vDeGroup = FEmrView.ActiveSection.ActiveData.Items[
                        FEmrView.ActiveSection.ActiveData.ActiveDomain.BeginNo] as DeGroup;

                    vInfo = vDeGroup[DeProp.Name];
                }

                if (vActiveItem is DeItem)
                {
                    DeItem vDeItem = vActiveItem as DeItem;
                    if (vDeItem.Active &&
                        (vDeItem[DeProp.Index] != "") &&
                        (!vDeItem.IsSelectComplate) &&
                        (!vDeItem.IsSelectPart) &&
                        (Environment.TickCount - FMouseDownTick < 500)
                        )
                    {
                        vInfo = vInfo + "元素(" + vDeItem[DeProp.Index] + ")";

                        if (FEmrView.ActiveSection.ActiveData.ReadOnly)
                        {
                            tssDeInfo.Text = "";
                            return;
                        }

                        POINT            vPt             = FEmrView.GetActiveDrawItemClientCoord();
                        HCCustomDrawItem vActiveDrawItem = FEmrView.GetTopLevelDrawItem();
                        RECT             vDrawItemRect   = vActiveDrawItem.Rect;
                        vDrawItemRect = HC.View.HC.Bounds(vPt.X, vPt.Y, vDrawItemRect.Width, vDrawItemRect.Height);

                        if (HC.View.HC.PtInRect(vDrawItemRect, new POINT(e.X, e.Y)))
                        {
                            vPt.Y = vPt.Y + FEmrView.ZoomIn(vActiveDrawItem.Height());
                            vPt.Offset(FEmrView.Left, FEmrView.Top);
                            HC.Win32.User.ClientToScreen(FEmrView.Handle, ref vPt);

                            PopupForm().PopupDeItem(vDeItem, vPt);
                        }
                    }
                }
                else
                if (vActiveItem is DeEdit)
                {
                }
                else
                if (vActiveItem is DeCombobox)
                {
                }
                else
                if (vActiveItem is DeDateTimePicker)
                {
                }
            }

            tssDeInfo.Text = vInfo;
        }