protected override void DoDrawItemPaintContent(HCCustomData aData, int aItemNo, int aDrawItemNo,
                                                       RECT aDrawRect, RECT aClearRect, string aDrawText,
                                                       int aDataDrawLeft, int aDataDrawRight, int aDataDrawBottom, int aDataScreenTop, int aDataScreenBottom,
                                                       HCCanvas aCanvas, PaintInfo aPaintInfo)
        {
            if ((FOnDrawItemAnnotate != null) && DrawItemOfAnnotate(aDrawItemNo, aCanvas, aClearRect))  // 当前DrawItem是某批注中的一部分
            {
                for (int i = 0; i <= FDrawItemAnnotates.Count - 1; i++)
                {
                    HCDrawItemAnnotate vDrawAnnotate = FDrawItemAnnotates[i];

                    if (!aPaintInfo.Print)
                    {
                        bool vActive = vDrawAnnotate.DataAnnotate.Equals(FHotAnnotate) ||
                                       vDrawAnnotate.DataAnnotate.Equals(FActiveAnnotate);

                        if (vActive)
                        {
                            aCanvas.Brush.Color = HC.AnnotateBKActiveColor;
                        }
                        else
                        {
                            aCanvas.Brush.Color = HC.AnnotateBKColor;
                        }
                    }

                    if (vDrawAnnotate.First())  // 是批注头
                    {
                        aCanvas.Pen.Color = Color.Red;
                        aCanvas.MoveTo(vDrawAnnotate.DrawRect.Left + 2, vDrawAnnotate.DrawRect.Top - 2);
                        aCanvas.LineTo(vDrawAnnotate.DrawRect.Left, vDrawAnnotate.DrawRect.Top);
                        aCanvas.LineTo(vDrawAnnotate.DrawRect.Left, vDrawAnnotate.DrawRect.Bottom);
                        aCanvas.LineTo(vDrawAnnotate.DrawRect.Left + 2, vDrawAnnotate.DrawRect.Bottom + 2);
                    }

                    if (vDrawAnnotate.Last())  // 是批注尾
                    {
                        aCanvas.Pen.Color = Color.Red;
                        aCanvas.MoveTo(vDrawAnnotate.DrawRect.Right - 2, vDrawAnnotate.DrawRect.Top - 2);
                        aCanvas.LineTo(vDrawAnnotate.DrawRect.Right, vDrawAnnotate.DrawRect.Top);
                        aCanvas.LineTo(vDrawAnnotate.DrawRect.Right, vDrawAnnotate.DrawRect.Bottom);
                        aCanvas.LineTo(vDrawAnnotate.DrawRect.Right - 2, vDrawAnnotate.DrawRect.Bottom + 2);

                        FOnDrawItemAnnotate(aData, aDrawItemNo, vDrawAnnotate.DrawRect, vDrawAnnotate.DataAnnotate);
                    }
                }
            }

            base.DoDrawItemPaintContent(aData, aItemNo, aDrawItemNo, aDrawRect, aClearRect, aDrawText,
                                        aDataDrawLeft, aDataDrawRight, aDataDrawBottom, aDataScreenTop, aDataScreenBottom, aCanvas, aPaintInfo);
        }
Esempio 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;
                            }
                        }
                    }
                }
            }
        }
Esempio n. 3
0
        /// <summary> 遍历处理痕迹隐藏或显示 </summary>
        private void DoHideTraceTraverse(HCCustomData aData, int aItemNo, int aTags, ref bool aStop)
        {
            if (!(aData.Items[aItemNo] is DeItem))  // 只对元素生效
            {
                return;
            }

            DeItem vDeItem = aData.Items[aItemNo] as DeItem;

            if (vDeItem.StyleEx == StyleExtra.cseDel)
            {
                vDeItem.Visible = !(aTags == TTravTag.HideTrace);  // 隐藏/显示痕迹
            }
        }
Esempio n. 4
0
 public HCRadioGroup(HCCustomData aOwnerData)
     : base(aOwnerData)
 {
     this.StyleNo     = HCStyle.RadioGroup;
     Width            = 100;
     FBatchCount      = 0;
     FColumns         = 0;
     FColumnAlign     = true;
     FItemHit         = false;
     FBoxRight        = false;
     FItems           = new HCList <HCRadioButton>();
     FItems.OnInsert += new EventHandler <NListEventArgs <HCRadioButton> >(DoItemNotify);
     FItems.OnDelete += OnItemDelete;
 }
Esempio n. 5
0
        public override void FormatToDrawItem(HCCustomData aRichData, int aItemNo)
        {
            Height = FMinHeight;

            aRichData.Style.ApplyTempStyle(TextStyleNo);

            int  vLeft = FPaddingLeft;
            int  vTop  = FPaddingTop;
            SIZE vSize = new SIZE();

            for (int i = 0; i <= FItems.Count - 1; i++)
            {
                if (FItems[i].Text != "")
                {
                    vSize = aRichData.Style.TempCanvas.TextExtent(FItems[i].Text);
                }
                else
                {
                    vSize = aRichData.Style.TempCanvas.TextExtent("H");
                }

                if (this.AutoSize && vLeft + vSize.cx + RadioButtonWidth > Width)
                {
                    vLeft = FPaddingLeft;
                    vTop  = vTop + vSize.cy + FPaddingBottom;
                }

                FItems[i].Position.X = vLeft;
                FItems[i].Position.Y = vTop;

                vLeft = vLeft + RadioButtonWidth + vSize.cx + FPaddingRight;
            }

            if (this.AutoSize)
            {
                Width = vLeft;
            }

            Height = vTop + vSize.cy + FPaddingBottom;

            if (Width < FMinWidth)
            {
                Width = FMinWidth;
            }
            if (Height < FMinHeight)
            {
                Height = FMinHeight;
            }
        }
Esempio n. 6
0
 // 当前RectItem格式化时所属的Data(为松耦合请传入TCustomRichData类型)
 public override void FormatToDrawItem(HCCustomData aRichData, int aItemNo)
 {
     this.Width  = 0;
     this.Height = aRichData.Style.TextStyles[0].FontHeight;  // 默认大小
     if (this.MarkType == MarkType.cmtBeg)
     {
         if (aItemNo < aRichData.Items.Count - 1)
         {
             HCCustomItem vItem = aRichData.Items[aItemNo + 1];
             if ((vItem.StyleNo == this.StyleNo) && // 下一个是组标识
                 ((vItem as HCDomainItem).MarkType == MarkType.cmtEnd)) // 下一个是结束标识
             {
                 this.Width = 10;                                       // 增加宽度以便输入时光标可方便点击
             }
             else
             if (vItem.ParaFirst)  // 下一个是段首,我是段尾
             {
                 this.Width = 10;  // 增加宽度以便输入时光标可方便点击
             }
             else
             if (vItem.StyleNo > HCStyle.Null)  // 后面是文本,跟随后面的高度
             {
                 this.Height = aRichData.Style.TextStyles[vItem.StyleNo].FontHeight;
             }
         }
         else
         {
             this.Width = 10;
         }
     }
     else  // 域结束标识
     {
         HCCustomItem vItem = aRichData.Items[aItemNo - 1];
         if ((vItem.StyleNo == this.StyleNo) && ((vItem as HCDomainItem).MarkType == MarkType.cmtBeg))
         {
             this.Width = 10;
         }
         else
         if (this.ParaFirst)  // 结束标识是段首,增加宽度
         {
             this.Width = 10;
         }
         else
         if (vItem.StyleNo > HCStyle.Null)  // 前面是文本,距离前面的高度
         {
             this.Height = aRichData.Style.TextStyles[vItem.StyleNo].FontHeight;
         }
     }
 }
Esempio n. 7
0
        public EmrToothItem(HCCustomData aOwnerData, string aLeftTopText, string aRightTopText,
                            string aLeftBottomText, string aRightBottomText)
            : base(aOwnerData)
        {
            this.StyleNo = EMR.EMRSTYLE_TOOTH;
            FPadding     = 2;
            FActiveArea  = ToothArea.ctaNone;
            FCaretOffset = -1;
            FEmptyLower  = true;

            FLeftTopText     = aLeftTopText;
            FLeftBottomText  = aLeftBottomText;
            FRightTopText    = aRightTopText;
            FRightBottomText = aRightBottomText;
        }
Esempio n. 8
0
 public HCEditItem(HCCustomData AOwnerData, string AText) : base(AOwnerData)
 {
     this.StyleNo = HCStyle.Edit;
     FText        = AText;
     FMouseIn     = false;
     FMargin      = 4;
     FCaretOffset = -1;
     Width        = 50;
     FBorderWidth = 1;
     FBorderSides = new HCBorderSides();
     FBorderSides.InClude((byte)BorderSide.cbsLeft);
     FBorderSides.InClude((byte)BorderSide.cbsTop);
     FBorderSides.InClude((byte)BorderSide.cbsRight);
     FBorderSides.InClude((byte)BorderSide.cbsBottom);
 }
Esempio n. 9
0
        public HCPageBreakItem(HCCustomData AOwnerData, int AWidth, int AHeight) : base(AOwnerData, AWidth, AHeight)
        {
            StyleNo = HCStyle.PageBreak;

            if (AOwnerData.Style.CurStyleNo > HCStyle.Null)
            {
                AOwnerData.Style.TextStyles[AOwnerData.Style.CurStyleNo].ApplyStyle(AOwnerData.Style.DefCanvas);
            }
            else
            {
                AOwnerData.Style.TextStyles[0].ApplyStyle(AOwnerData.Style.DefCanvas);
            }

            Height = AOwnerData.Style.DefCanvas.TextHeight("H");
        }
Esempio n. 10
0
        public HCPageBreakItem(HCCustomData aOwnerData, int aWidth, int aHeight) : base(aOwnerData, aWidth, aHeight)
        {
            StyleNo = HCStyle.PageBreak;

            if (aOwnerData.CurStyleNo > HCStyle.Null)
            {
                aOwnerData.Style.ApplyTempStyle(aOwnerData.CurStyleNo);
                Height = aOwnerData.Style.TextStyles[aOwnerData.CurStyleNo].FontHeight;
            }
            else
            {
                aOwnerData.Style.ApplyTempStyle(0);
                Height = aOwnerData.Style.TextStyles[0].FontHeight;
            }
        }
Esempio n. 11
0
 protected override void DoSectionRemoveItem(object sender, HCCustomData aData, HCCustomItem aItem)
 {
     base.DoSectionRemoveItem(sender, aData, aItem);
     if (aItem == FActiveItem)
     {
         FState = HCToolState.hcsRemoveItem;
         try
         {
             CancelActiveToolItem();
         }
         finally
         {
             FState = HCToolState.hcsNone;
         }
     }
 }
Esempio n. 12
0
        protected override void DoDrawItemPaintContent(HCCustomData aData, int aItemNo, int aDrawItemNo,
                                                       RECT aDrawRect, RECT aClearRect, string aDrawText,
                                                       int aDataDrawLeft, int aDataDrawRight, int aDataDrawBottom, int aDataScreenTop, int aDataScreenBottom,
                                                       HCCanvas aCanvas, PaintInfo aPaintInfo)
        {
            if ((!aPaintInfo.Print) && (FOnDrawItemAnnotate != null))  // 当前DrawItem是某批注中的一部分
            {
                if (aData.Items[aItemNo].StyleNo == HCStyle.Annotate && ((aData.Items[aItemNo] as HCAnnotateItem).MarkType == MarkType.cmtEnd))
                {
                    FOnDrawItemAnnotate(aData, aDrawItemNo, aDrawRect, aData.Items[aItemNo] as HCAnnotateItem);
                }
            }

            base.DoDrawItemPaintContent(aData, aItemNo, aDrawItemNo, aDrawRect, aClearRect, aDrawText,
                                        aDataDrawLeft, aDataDrawRight, aDataDrawBottom, aDataScreenTop, aDataScreenBottom, aCanvas, aPaintInfo);
        }
Esempio n. 13
0
        public override void GetCaretInfo(int aItemNo, int aOffset, ref HCCaretInfo aCaretInfo)
        {
            base.GetCaretInfo(aItemNo, aOffset, ref aCaretInfo);

            bool vRePaint = false;

            // 赋值激活Group信息,清除在 MouseDown
            if (this.SelectInfo.StartItemNo >= 0)
            {
                HCCustomData vTopData = GetTopLevelData();
                if (vTopData == this)
                {
                    if (this.Style.DrawActiveDomainRegion && (FActiveDomain.BeginNo >= 0))
                    {
                        vRePaint = true;
                    }

                    // 获取当前光标处ActiveDeGroup信息
                    GetDomainFrom(SelectInfo.StartItemNo, SelectInfo.StartItemOffset, FActiveDomain);

                    if (this.Style.DrawActiveDomainRegion && (FActiveDomain.BeginNo >= 0))
                    {
                        vRePaint = true;
                    }
                }
            }
            else
            if (this.Style.DrawActiveDomainRegion && (FActiveDomain.BeginNo >= 0))
            {
                FActiveDomain.Clear();
                vRePaint = true;
            }

            if (vRePaint)
            {
                Style.UpdateInfoRePaint();
            }

            if (FCaretItemChanged)
            {
                FCaretItemChanged = false;
                if (FOnCaretItemChanged != null)
                {
                    FOnCaretItemChanged(this, Items[SelectInfo.StartItemNo]);
                }
            }
        }
Esempio n. 14
0
        protected override void DoDrawItemPaintBefor(HCCustomData aData, int aDrawItemNo,
                                                     RECT aDrawRect, int aDataDrawLeft, int aDataDrawBottom, int aDataScreenTop,
                                                     int ADataScreenBottom, HCCanvas ACanvas, PaintInfo APaintInfo)
        {
            base.DoDrawItemPaintBefor(aData, aDrawItemNo, aDrawRect, aDataDrawLeft,
                                      aDataDrawBottom, aDataScreenTop, ADataScreenBottom, ACanvas, APaintInfo);

            if (!APaintInfo.Print)  // 拼接域范围
            {
                bool vDrawHotDomainBorde    = false;
                bool vDrawActiveDomainBorde = false;
                int  vItemNo = DrawItems[aDrawItemNo].ItemNo;

                if (FHotDomain.BeginNo >= 0)
                {
                    vDrawHotDomainBorde = FHotDomain.Contain(vItemNo);
                }

                if (FActiveDomain.BeginNo >= 0)
                {
                    vDrawActiveDomainBorde = FActiveDomain.Contain(vItemNo);
                }

                if (vDrawHotDomainBorde || vDrawActiveDomainBorde)  // 在Hot域或激活域中
                {
                    IntPtr vDliRGN = (IntPtr)GDI.CreateRectRgn(aDrawRect.Left, aDrawRect.Top, aDrawRect.Right, aDrawRect.Bottom);
                    try
                    {
                        if ((FHotDomain.BeginNo >= 0) && vDrawHotDomainBorde)
                        {
                            GDI.CombineRgn(FHotDomainRGN, FHotDomainRGN, vDliRGN, GDI.RGN_OR);
                        }

                        if ((FActiveDomain.BeginNo >= 0) && vDrawActiveDomainBorde)
                        {
                            GDI.CombineRgn(FActiveDomainRGN, FActiveDomainRGN, vDliRGN, GDI.RGN_OR);
                        }
                    }
                    finally
                    {
                        GDI.DeleteObject(vDliRGN);
                    }
                }
            }
        }
Esempio n. 15
0
        private void GetBeforString(HCCustomData aData, int aStartItemNo, ref string aBefor)
        {
            string vText = "";

            for (int i = aStartItemNo - 1; i >= 0; i--)
            {
                vText = aData.Items[i].Text;
                if ((vText != "") && (GetCharBefor(vText.Length, ref vText)))
                {
                    aBefor = vText + aBefor;
                    return;
                }
                else
                {
                    aBefor = vText + aBefor;
                }
            }
        }
Esempio n. 16
0
        private void GetAfterString(HCCustomData aData, int aStartItemNo, ref string aAfter)
        {
            string vText = "";

            for (int i = aStartItemNo + 1; i < aData.Items.Count; i++)
            {
                vText = aData.Items[i].Text;
                if ((vText != "") && (GetCharAfter(1, ref vText)))
                {
                    aAfter = aAfter + vText;
                    return;
                }
                else
                {
                    aAfter = aAfter + vText;
                }
            }
        }
Esempio n. 17
0
        protected override void DoDrawItemPaintAfter(HCCustomData aData, int aItemNo, int aDrawItemNo, RECT aDrawRect, RECT aClearRect,
                                                     int aDataDrawLeft, int aDataDrawRight, int aDataDrawBottom, int aDataScreenTop, int aDataScreenBottom,
                                                     HCCanvas ACanvas, PaintInfo APaintInfo)
        {
            base.DoDrawItemPaintAfter(aData, aItemNo, aDrawItemNo, aDrawRect, aClearRect, aDataDrawLeft, aDataDrawRight,
                                      aDataDrawBottom, aDataScreenTop, aDataScreenBottom, ACanvas, APaintInfo);

            if (FShowUnderLine)
            {
                if (DrawItems[aDrawItemNo].LineFirst)
                {
                    ACanvas.Pen.BeginUpdate();
                    try
                    {
                        ACanvas.Pen.Color = Color.Black;
                        ACanvas.Pen.Style = HCPenStyle.psSolid;
                    }
                    finally
                    {
                        ACanvas.Pen.EndUpdate();
                    }

                    ACanvas.MoveTo(aDataDrawLeft, aDrawRect.Top - 1);
                    ACanvas.LineTo(aDataDrawLeft + this.Width, aDrawRect.Top - 1);
                }

                if (aDrawItemNo == DrawItems.Count - 1)
                {
                    ACanvas.Pen.BeginUpdate();
                    try
                    {
                        ACanvas.Pen.Color = Color.Black;
                        ACanvas.Pen.Style = HCPenStyle.psSolid;
                    }
                    finally
                    {
                        ACanvas.Pen.EndUpdate();
                    }

                    ACanvas.MoveTo(aDataDrawLeft, aDrawRect.Bottom);
                    ACanvas.LineTo(aDataDrawLeft + this.Width, aDrawRect.Bottom);
                }
            }
        }
Esempio n. 18
0
        /// <summary> 创建指定样式的Item </summary>
        /// <param name="aData">要创建Item的Data</param>
        /// <param name="aStyleNo">要创建的Item样式</param>
        /// <returns>创建好的Item</returns>
        public static HCCustomItem CreateEmrStyleItem(HCCustomData aData, int aStyleNo)
        {
            switch (aStyleNo)
            {
            case HCStyle.Table:
                return(new DeTable(aData, 1, 1, 1));

            case HCStyle.CheckBox:
                return(new DeCheckBox(aData, "勾选框", false));

            case HCStyle.Edit:
                return(new DeEdit(aData, ""));

            case HCStyle.Combobox:
                return(new DeCombobox(aData, ""));

            case HCStyle.DateTimePicker:
                return(new DeDateTimePicker(aData, DateTime.Now));

            case HCStyle.Button:
                return(new DeButton(aData, ""));

            case HCStyle.RadioGroup:
                return(new DeRadioGroup(aData));

            case EMR.EMRSTYLE_YUEJING:
                return(new EmrYueJingItem(aData, "", "", "", ""));

            case EMR.EMRSTYLE_TOOTH:
                return(new EmrToothItem(aData, "", "", "", ""));

            case EMR.EMRSTYLE_FANGJIAO:
                return(new EmrFangJiaoItem(aData, "", "", "", ""));

            case HCStyle.FloatBarCode:
                return(new DeFloatBarCodeItem(aData));

            case HCStyle.Image:
                return(new DeImageItem(aData));

            default:
                return(null);
            }
        }
Esempio n. 19
0
 public HCEditItem(HCCustomData aOwnerData, string aText)
     : base(aOwnerData)
 {
     this.StyleNo   = HCStyle.Edit;
     FText          = aText;
     FPaddingLeft   = 4;
     FPaddingRight  = 4;
     FPaddingTop    = 4;
     FPaddingBottom = 4;
     FCaretOffset   = -1;
     Width          = 50;
     FPrintOnlyText = false;
     FBorderWidth   = 1;
     FBorderSides   = new HCBorderSides();
     FBorderSides.InClude((byte)BorderSide.cbsLeft);
     FBorderSides.InClude((byte)BorderSide.cbsTop);
     FBorderSides.InClude((byte)BorderSide.cbsRight);
     FBorderSides.InClude((byte)BorderSide.cbsBottom);
 }
Esempio n. 20
0
        protected override void DoSectionRemoveItem(object sender, HCCustomData aData, HCCustomItem aItem)
        {
            base.DoSectionRemoveItem(sender, aData, aItem);
            if (aItem == FActiveItem)
            {
                if (FActiveItem is HCImageItem)
                {
                    (FActiveItem as HCImageItem).ShapeManager.DisActive();
                    FImageToolBar.Visible = false;
                }
                else
                if (FActiveItem is HCTableItem)  // 是表格
                {
                    FTableToolBar.Visible = false;
                }

                FActiveItem = null;
            }
        }
Esempio n. 21
0
        private void DoTraverseItem(HCCustomData aData, int aItemNo, int aTag, ref bool aStop)
        {
            if (!(aData.Items[aItemNo] is DeItem))
            {
                return;
            }

            DeItem vDeItem = aData.Items[aItemNo] as DeItem;

            if (FTraverseTags.Contains(TraverseTag.ttWriteTraceInfo))
            {
                switch (vDeItem.StyleEx)
                {
                case StyleExtra.cseNone:
                    vDeItem[DeProp.Trace] = "";
                    break;

                case StyleExtra.cseDel:
                    if (vDeItem[DeProp.Trace] == "")
                    {
                        vDeItem[DeProp.Trace] = UserInfo.Name + "(" + UserInfo.ID + ") 删除 "
                                                + string.Format("{0:yyyy-MM-dd}", DateTime.Now);
                    }
                    break;

                case StyleExtra.cseAdd:
                    if (vDeItem[DeProp.Trace] == "")
                    {
                        vDeItem[DeProp.Trace] = UserInfo.Name + "(" + UserInfo.ID + ") 添加 "
                                                + string.Format("{0:yyyy-MM-dd}", DateTime.Now);
                    }
                    break;
                }
            }

            if (FTraverseTags.Contains(TraverseTag.ttShowTrace))
            {
                if (vDeItem.StyleEx == StyleExtra.cseDel)
                {
                    vDeItem.Visible = !vDeItem.Visible;
                }
            }
        }
Esempio n. 22
0
        public byte DROPDOWNCOUNT      = 8;  // 下拉弹出时显示的Item数量

        public HCComboboxItem(HCCustomData AOwnerData, string AText) : base(AOwnerData, AText)
        {
            this.StyleNo = HCStyle.Combobox;
            Width        = 80;
            FSaveItem    = true;
            FItems       = new List <string>();

            FScrollBar             = new HCComScrollBar();
            FScrollBar.Orientation = Orientation.oriVertical;
            FScrollBar.OnScroll    = DoScroll;

            FPopupForm              = new HCPopupForm();
            FPopupForm.OnPaint      = DoPopupFormPaint;
            FPopupForm.OnPopupClose = DoPopupFormClose;
            FPopupForm.OnMouseDown  = DoPopupFormMouseDown;
            FPopupForm.OnMouseMove  = DoPopupFormMouseMove;
            FPopupForm.OnMouseUp    = DoPopupFormMouseUp;
            FPopupForm.OnMouseWheel = DoPopupFormMouseWheel;
        }
Esempio n. 23
0
 // 当前RectItem格式化时所属的Data(为松耦合请传入TCustomRichData类型)
 public override void FormatToDrawItem(HCCustomData ARichData, int AItemNo)
 {
     this.Width  = 0;
     this.Height = 5;  // 默认大小
     if (this.MarkType == MarkType.cmtBeg)
     {
         if (AItemNo < ARichData.Items.Count - 1)
         {
             HCCustomItem vItem = ARichData.Items[AItemNo + 1];
             if ((vItem.StyleNo == this.StyleNo) && // 下一个是组标识)
                 ((vItem as HCDomainItem).MarkType == MarkType.cmtEnd)) // 下一个是结束标识
             {
                 this.Width = 10;                                       // 增加宽度以便输入时光标可方便点击
             }
             else
             if (vItem.StyleNo > HCStyle.Null)
             {
                 ARichData.Style.TextStyles[vItem.StyleNo].ApplyStyle(ARichData.Style.DefCanvas);
                 this.Height = ARichData.Style.DefCanvas.TextHeight("H");
             }
         }
         else
         {
             this.Width = 10;
         }
     }
     else  // 域结束标识
     {
         HCCustomItem vItem = ARichData.Items[AItemNo - 1];
         if ((vItem.StyleNo == this.StyleNo) &&
             ((vItem as HCDomainItem).MarkType == MarkType.cmtBeg))
         {
             this.Width = 10;
         }
         else
         if (vItem.StyleNo > HCStyle.Null)
         {
             ARichData.Style.TextStyles[vItem.StyleNo].ApplyStyle(ARichData.Style.DefCanvas);
             this.Height = ARichData.Style.DefCanvas.TextHeight("H");
         }
     }
 }
Esempio n. 24
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);
        }
Esempio n. 25
0
        public override void FormatToDrawItem(HCCustomData ARichData, int AItemNo)
        {
            if (this.AutoSize)
            {
                ARichData.Style.TextStyles[TextStyleNo].ApplyStyle(ARichData.Style.DefCanvas);
                SIZE vSize = ARichData.Style.DefCanvas.TextExtent(FText);
                Width  = FMargin + CheckBoxSize + FMargin + vSize.cx;
                Height = Math.Max(vSize.cy, CheckBoxSize);
            }

            if (Width < FMinWidth)
            {
                Width = FMinWidth;
            }

            if (Height < FMinHeight)
            {
                Height = FMinHeight;
            }
        }
Esempio n. 26
0
        public override void FormatToDrawItem(HCCustomData aRichData, int aItemNo)
        {
            CalcTextSize();

            if (this.AutoSize)
            {
                Width  = FPaddingLeft + FTextSize.cx + FPaddingRight; // 间距
                Height = FPaddingTop + FTextSize.cy + FPaddingBottom;
            }

            if (Width < FMinWidth)
            {
                Width = FMinWidth;
            }

            if (Height < FMinHeight)
            {
                Height = FMinHeight;
            }
        }
Esempio n. 27
0
        public override void FormatToDrawItem(HCCustomData aRichData, int aItemNo)
        {
            if (this.AutoSize)
            {
                aRichData.Style.ApplyTempStyle(TextStyleNo);
                SIZE vSize = aRichData.Style.TempCanvas.TextExtent(FText);
                Width  = FPaddingLeft + CheckBoxSize + FPaddingLeft + vSize.cx;
                Height = Math.Max(vSize.cy, CheckBoxSize);
            }

            if (Width < FMinWidth)
            {
                Width = FMinWidth;
            }

            if (Height < FMinHeight)
            {
                Height = FMinHeight;
            }
        }
Esempio n. 28
0
        protected override void OnMouseDown(MouseEventArgs e)
        {
            FCaptureToolBar = null;

            if (!this.ReadOnly)
            {
                if (FUseTableTool && FTableToolBar.Visible && TableMouseDown(e))
                {
                    FCaptureToolBar = FTableToolBar;
                    return;
                }

                if (FUseImageTool && FImageToolBar.Visible && ImageMouseDown(e))
                {
                    FCaptureToolBar = FImageToolBar;
                    return;
                }
            }

            base.OnMouseDown(e);

            FTopData = this.ActiveSectionTopLevelData();
            HCCustomItem vTopItem = FTopData.GetActiveItem();

            SetActiveToolItem(vTopItem);

            HCCustomData vData = null;

            while (FActiveItem == null)
            {
                vData = FTopData.GetRootData();
                if (vData == FTopData)
                {
                    break;
                }

                FTopData = vData;
                vTopItem = FTopData.GetActiveItem();
                SetActiveToolItem(vTopItem);
            }
        }
Esempio n. 29
0
        public override void FormatToDrawItem(HCCustomData aRichData, int aItemNo)
        {
            this.Width  = 0;
            this.Height = aRichData.Style.TextStyles[0].FontHeight - aRichData.Style.LineSpaceMin;

            if (this.MarkType == MarkType.cmtBeg)
            {
                if (aItemNo < aRichData.Items.Count - 1)
                {
                    HCCustomItem vItem = aRichData.Items[aItemNo + 1];
                    if (vItem.StyleNo == this.StyleNo &&
                        (vItem as HCAnnotateItem).MarkType == MarkType.cmtEnd)
                    {
                        this.Width = 10;
                    }
                    else
                    if (vItem.ParaFirst)
                    {
                        this.Width = 10;
                    }
                }
                else
                {
                    this.Width = 10;
                }
            }
            else
            {
                HCCustomItem vItem = aRichData.Items[aItemNo - 1];
                if (vItem.StyleNo == this.StyleNo && (vItem as HCAnnotateItem).MarkType == MarkType.cmtBeg)
                {
                    this.Width = 10;
                }
                else
                if (this.ParaFirst)
                {
                    this.Width = 10;
                }
            }
        }
Esempio n. 30
0
        protected override void DoDrawItemPaintBefor(HCCustomData aData, int aItemNo, int aDrawItemNo,
                                                     RECT aDrawRect, RECT aClearRect, int aDataDrawLeft, int aDataDrawRight, int aDataDrawBottom, int aDataScreenTop, int aDataScreenBottom,
                                                     HCCanvas aCanvas, PaintInfo aPaintInfo)
        {
            if ((!aPaintInfo.Print) && (aData.Items[aItemNo] is DeItem))
            {
                DeItem vDeItem = aData.Items[aItemNo] as DeItem;
                if (vDeItem.IsElement)                         // 是数据元
                {
                    if ((vDeItem.MouseIn) || (vDeItem.Active)) // 鼠标移入和光标
                    {
                        if ((vDeItem.IsSelectPart) || (vDeItem.IsSelectComplate))
                        {
                        }
                        else
                        {
                            if (vDeItem[DeProp.Name] != vDeItem.Text)  // 已经填写过了
                            {
                                aCanvas.Brush.Color = FDeDoneColor;
                            }
                            else  // 没填写过
                            {
                                aCanvas.Brush.Color = FDeUnDoneColor;
                            }

                            aCanvas.FillRect(aDrawRect);
                        }
                    }
                }
                else  // 不是数据元
                {
                    if (FDesignMode && vDeItem.EditProtect)
                    {
                        aCanvas.Brush.Color = HC.View.HC.clBtnFace;
                        aCanvas.FillRect(aDrawRect);
                    }
                }
            }
        }