public override void LoadFromStream(Stream aStream, HCStyle aStyle, ushort aFileVersion) { base.LoadFromStream(aStream, aStyle, aFileVersion); byte vByte = (byte)aStream.ReadByte(); FEditProtect = (vByte >> 7) == 1; if (aFileVersion > 34) { FDeleteAllow = (vByte >> 6) == 1; } else { FDeleteAllow = true; } string vS = ""; HC.View.HC.HCLoadTextFromStream(aStream, ref vS, aFileVersion); DeProp.SetPropertyString(vS, FPropertys); }
/// <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 { this.Data.DeleteActiveDataItems(this.Data.SelectInfo.StartItemNo, this.Data.SelectInfo.StartItemNo, true); this.Data.InsertStream(aStream, vStyle, vFileVersion); } finally { this.UndoGroupEnd(); } } finally { this.EndUpdate(); } } finally { vStyle.Dispose(); } }
protected override void DoPaint(HCStyle aStyle, RECT aDrawRect, int aDataDrawTop, int aDataDrawBottom, int aDataScreenTop, int aDataScreenBottom, HCCanvas aCanvas, PaintInfo aPaintInfo) { if (this.Active && (!aPaintInfo.Print)) { aCanvas.Brush.Color = HC.View.HC.clBtnFace; aCanvas.FillRect(aDrawRect); } aStyle.TextStyles[TextStyleNo].ApplyStyle(aCanvas, aPaintInfo.ScaleY / aPaintInfo.Zoom); if (FLeftTopText != "") { aCanvas.TextOut(aDrawRect.Left + FLeftTopRect.Left, aDrawRect.Top + FLeftTopRect.Top, FLeftTopText); } if (FLeftBottomText != "") { aCanvas.TextOut(aDrawRect.Left + FLeftBottomRect.Left, aDrawRect.Top + FLeftBottomRect.Top, FLeftBottomText); } if (FRightTopText != "") { aCanvas.TextOut(aDrawRect.Left + FRightTopRect.Left, aDrawRect.Top + FRightTopRect.Top, FRightTopText); } if (FRightBottomText != "") { aCanvas.TextOut(aDrawRect.Left + FRightBottomRect.Left, aDrawRect.Top + FRightBottomRect.Top, FRightBottomText); } // 十字线 aCanvas.Pen.Color = Color.Black; aCanvas.MoveTo(aDrawRect.Left, aDrawRect.Top + FLeftTopRect.Bottom + FPadding); aCanvas.LineTo(aDrawRect.Right, aDrawRect.Top + FLeftTopRect.Bottom + FPadding); aCanvas.MoveTo(aDrawRect.Left + FLeftTopRect.Right + FPadding, aDrawRect.Top); aCanvas.LineTo(aDrawRect.Left + FLeftTopRect.Right + FPadding, aDrawRect.Bottom); if (!aPaintInfo.Print) { RECT vFocusRect = new RECT(); if (FActiveArea != ToothArea.ctaNone) { switch (FActiveArea) { case ToothArea.ctaLeftTop: vFocusRect = FLeftTopRect; break; case ToothArea.ctaLeftBottom: vFocusRect = FLeftBottomRect; break; case ToothArea.ctaRightTop: vFocusRect = FRightTopRect; break; case ToothArea.ctaRightBottom: vFocusRect = FRightBottomRect; break; } vFocusRect.Offset(aDrawRect.Left, aDrawRect.Top); vFocusRect.Inflate(2, 2); aCanvas.Pen.Color = Color.Gray; aCanvas.Rectangle(vFocusRect); } if ((FMouseMoveArea != ToothArea.ctaNone) && (FMouseMoveArea != FActiveArea)) { switch (FMouseMoveArea) { case ToothArea.ctaLeftTop: vFocusRect = FLeftTopRect; break; case ToothArea.ctaLeftBottom: vFocusRect = FLeftBottomRect; break; case ToothArea.ctaRightTop: vFocusRect = FRightTopRect; break; case ToothArea.ctaRightBottom: vFocusRect = FRightBottomRect; break; } vFocusRect.Offset(aDrawRect.Left, aDrawRect.Top); vFocusRect.Inflate(2, 2); aCanvas.Pen.Color = Color.LightGray; aCanvas.Rectangle(vFocusRect); } } }
public override void FormatToDrawItem(HCCustomData aRichData, int aItemNo) { HCStyle vStyle = aRichData.Style; vStyle.ApplyTempStyle(TextStyleNo); int vH = vStyle.TextStyles[TextStyleNo].FontHeight; int vLeftTopW = Math.Max(vStyle.TempCanvas.TextWidth(FLeftTopText), FPadding); int vLeftBottomW = Math.Max(vStyle.TempCanvas.TextWidth(FLeftBottomText), FPadding); int vRightTopW = Math.Max(vStyle.TempCanvas.TextWidth(FRightTopText), FPadding); int vRightBottomW = Math.Max(vStyle.TempCanvas.TextWidth(FRightBottomText), FPadding); // 计算尺寸 int vW = 4 * FPadding; if (vLeftTopW > vLeftBottomW) { vW = vW + vLeftTopW; } else { vW = vW + vLeftBottomW; } if (vRightTopW > vRightBottomW) { vW = vW + vRightTopW; } else { vW = vW + vRightBottomW; } Width = vW; Height = vH * 2 + 4 * FPadding; // 计算各字符串位置 if (vLeftTopW > vLeftBottomW) { FLeftTopRect = HC.View.HC.Bounds(FPadding, FPadding, vLeftTopW, vH); FLeftBottomRect = HC.View.HC.Bounds(FPadding, Height - FPadding - vH, vLeftTopW, vH); } else // 左下宽 { FLeftTopRect = HC.View.HC.Bounds(FPadding, FPadding, vLeftBottomW, vH); FLeftBottomRect = HC.View.HC.Bounds(FPadding, Height - FPadding - vH, vLeftBottomW, vH); } if (vRightTopW > vRightBottomW) { FRightTopRect = HC.View.HC.Bounds(FLeftTopRect.Right + FPadding + FPadding, FPadding, vRightTopW, vH); FRightBottomRect = HC.View.HC.Bounds(FLeftTopRect.Right + FPadding + FPadding, Height - FPadding - vH, vRightTopW, vH); } else // 右下宽 { FRightTopRect = HC.View.HC.Bounds(FLeftTopRect.Right + FPadding + FPadding, FPadding, vRightBottomW, vH); FRightBottomRect = HC.View.HC.Bounds(FLeftTopRect.Right + FPadding + FPadding, Height - FPadding - vH, vRightBottomW, vH); } if (FEmptyLower) { vH = 0; if ((FLeftTopText == "") && (FRightTopText == "")) { vH = FLeftTopRect.Height - AreaMinSize; FLeftTopRect.Height = AreaMinSize; FRightTopRect.Height = AreaMinSize; FLeftBottomRect.Offset(0, -vH); FRightBottomRect.Offset(0, -vH); } if ((FLeftBottomText == "") && (FRightBottomText == "")) { vH = vH + FLeftBottomRect.Height - AreaMinSize; FLeftBottomRect.Height = AreaMinSize; FRightBottomRect.Height = AreaMinSize; } Height = Height - vH; } }
protected override void DoPaint(HCStyle aStyle, RECT aDrawRect, int aDataDrawTop, int aDataDrawBottom, int aDataScreenTop, int aDataScreenBottom, HCCanvas aCanvas, PaintInfo aPaintInfo) { base.DoPaint(aStyle, aDrawRect, aDataDrawTop, aDataDrawBottom, aDataScreenTop, aDataScreenBottom, aCanvas, aPaintInfo); }
protected override void DoPaint(HCStyle aStyle, RECT aDrawRect, int aDataDrawTop, int aDataDrawBottom, int aDataScreenTop, int aDataScreenBottom, HCCanvas aCanvas, PaintInfo aPaintInfo) { base.DoPaint(aStyle, aDrawRect, aDataDrawTop, aDataDrawBottom, aDataScreenTop, aDataScreenBottom, aCanvas, aPaintInfo); if (FOnPaintBKG != null) { FOnPaintBKG(this, aCanvas, aDrawRect, aPaintInfo); } if (FStyleEx == StyleExtra.cseDel) { int vTextHeight = aStyle.TextStyles[this.StyleNo].FontHeight; int vAlignVert = User.DT_BOTTOM; switch (aStyle.ParaStyles[this.ParaNo].AlignVert) { case ParaAlignVert.pavCenter: vAlignVert = User.DT_CENTER; break; case ParaAlignVert.pavTop: vAlignVert = User.DT_TOP; break; default: vAlignVert = User.DT_BOTTOM; break; } int vTop = aDrawRect.Top; switch (vAlignVert) { case User.DT_TOP: vTop = aDrawRect.Top; break; case User.DT_CENTER: vTop = aDrawRect.Top + (aDrawRect.Bottom - aDrawRect.Top - vTextHeight) / 2; break; default: vTop = aDrawRect.Bottom - vTextHeight; break; } // 绘制删除线 aCanvas.Pen.BeginUpdate(); try { aCanvas.Pen.Style = HCPenStyle.psSolid; aCanvas.Pen.Color = Color.Red; } finally { aCanvas.Pen.EndUpdate(); } vTop = vTop + (aDrawRect.Bottom - vTop) / 2; aCanvas.MoveTo(aDrawRect.Left, vTop - 1); aCanvas.LineTo(aDrawRect.Right, vTop - 1); aCanvas.MoveTo(aDrawRect.Left, vTop + 2); aCanvas.LineTo(aDrawRect.Right, vTop + 2); } else if (FStyleEx == StyleExtra.cseAdd) { aCanvas.Pen.BeginUpdate(); try { aCanvas.Pen.Style = HCPenStyle.psSolid; aCanvas.Pen.Color = Color.Blue; } finally { aCanvas.Pen.EndUpdate(); } aCanvas.MoveTo(aDrawRect.Left, aDrawRect.Bottom); aCanvas.LineTo(aDrawRect.Right, aDrawRect.Bottom); } }
public override void ApplySelectTextStyle(HCStyle aStyle, HCStyleMatch aMatchStyle) { FTextStyleNo = aMatchStyle.GetMatchStyleNo(aStyle, FTextStyleNo); }
protected override void DoPaint(HCStyle aStyle, RECT aDrawRect, int aDataDrawTop, int aDataDrawBottom, int aDataScreenTop, int aDataScreenBottom, HCCanvas aCanvas, PaintInfo aPaintInfo) { if (this.Active && (!aPaintInfo.Print)) { aCanvas.Brush.Color = HC.View.HC.clBtnFace; aCanvas.FillRect(aDrawRect); } aStyle.TextStyles[TextStyleNo].ApplyStyle(aCanvas, aPaintInfo.ScaleY / aPaintInfo.Zoom); aCanvas.TextOut(aDrawRect.Left + LeftRect.Left, aDrawRect.Top + LeftRect.Top, LeftText); aCanvas.TextOut(aDrawRect.Left + TopRect.Left, aDrawRect.Top + TopRect.Top, TopText); aCanvas.TextOut(aDrawRect.Left + RightRect.Left, aDrawRect.Top + RightRect.Top, RightText); aCanvas.TextOut(aDrawRect.Left + BottomRect.Left, aDrawRect.Top + BottomRect.Top, BottomText); aCanvas.Pen.Color = Color.Black; aCanvas.DrawLine(aDrawRect.Left, aDrawRect.Top, aDrawRect.Right, aDrawRect.Bottom); aCanvas.DrawLine(aDrawRect.Right, aDrawRect.Top, aDrawRect.Left, aDrawRect.Bottom); if (!aPaintInfo.Print) { RECT vFocusRect = new RECT(); if (FMouseIn) { aCanvas.Pen.Color = Color.Gray; vFocusRect = LeftRect; vFocusRect.Offset(aDrawRect.Left, aDrawRect.Top); vFocusRect.Inflate(2, 2); aCanvas.Rectangle(vFocusRect); vFocusRect = TopRect; vFocusRect.Offset(aDrawRect.Left, aDrawRect.Top); vFocusRect.Inflate(2, 2); aCanvas.Rectangle(vFocusRect); vFocusRect = RightRect; vFocusRect.Offset(aDrawRect.Left, aDrawRect.Top); vFocusRect.Inflate(2, 2); aCanvas.Rectangle(vFocusRect); vFocusRect = BottomRect; vFocusRect.Offset(aDrawRect.Left, aDrawRect.Top); vFocusRect.Inflate(2, 2); aCanvas.Rectangle(vFocusRect); } if (FActiveArea != ExpressArea.ceaNone) { switch (FActiveArea) { case ExpressArea.ceaLeft: vFocusRect = LeftRect; break; case ExpressArea.ceaTop: vFocusRect = TopRect; break; case ExpressArea.ceaRight: vFocusRect = RightRect; break; default: vFocusRect = BottomRect; break; } vFocusRect.Offset(aDrawRect.Left, aDrawRect.Top); vFocusRect.Inflate(2, 2); aCanvas.Pen.Color = Color.Blue; aCanvas.Rectangle(vFocusRect); } } }