public override void GetCaretInfo(ref HCCaretInfo aCaretInfo) { if (FActiveArea != ExpressArea.ceaNone) { OwnerData.Style.ApplyTempStyle(TextStyleNo); switch (FActiveArea) { case ExpressArea.ceaLeft: if (FCaretOffset < 0) { FCaretOffset = 0; } aCaretInfo.Height = FLeftRect.Bottom - FLeftRect.Top; aCaretInfo.X = FLeftRect.Left + OwnerData.Style.TempCanvas.TextWidth(FLeftText.Substring(0, FCaretOffset)); aCaretInfo.Y = FLeftRect.Top; break; case ExpressArea.ceaTop: if (FCaretOffset < 0) { FCaretOffset = 0; } aCaretInfo.Height = TopRect.Bottom - TopRect.Top; aCaretInfo.X = TopRect.Left + OwnerData.Style.TempCanvas.TextWidth(TopText.Substring(0, FCaretOffset)); aCaretInfo.Y = TopRect.Top; break; case ExpressArea.ceaRight: if (FCaretOffset < 0) { FCaretOffset = 0; } aCaretInfo.Height = FRightRect.Bottom - FRightRect.Top; aCaretInfo.X = FRightRect.Left + OwnerData.Style.TempCanvas.TextWidth(FRightText.Substring(0, FCaretOffset)); aCaretInfo.Y = FRightRect.Top; break; case ExpressArea.ceaBottom: if (FCaretOffset < 0) { FCaretOffset = 0; } aCaretInfo.Height = BottomRect.Bottom - BottomRect.Top; aCaretInfo.X = BottomRect.Left + OwnerData.Style.TempCanvas.TextWidth(BottomText.Substring(0, FCaretOffset)); aCaretInfo.Y = BottomRect.Top; break; } } else { aCaretInfo.Visible = false; } }