RichTextBox pseudo caret when it doesn't have focus

This commit is contained in:
Rich 2011-02-09 21:52:56 +00:00
parent c0a822d4f7
commit 41c8a90bdf
6 changed files with 113 additions and 5 deletions

View File

@ -187,6 +187,7 @@ namespace VEPROMS
}
void frmVEPROMS_Activated(object sender, EventArgs e)
{
if (ActiveControl == tc) tc.HideCaret();
// refresh anything that pertains to external files or programs:
// if ro.fst was 'updated' from the roeditor, enable the update ro.fst values on
@ -260,6 +261,21 @@ namespace VEPROMS
displayBookMarks.MyDisplayTabControl = tc; // allows bookmark selection to bring up steps/docs
office2007StartButton1.MouseDown +=new MouseEventHandler(office2007StartButton1_MouseDown);
//displayRO.EnabledChanged += new EventHandler(displayRO_EnabledChanged);
tc.Enter += new EventHandler(tc_Enter);
tc.Leave += new EventHandler(tc_Leave);
this.Deactivate += new EventHandler(frmVEPROMS_Deactivate);
}
void frmVEPROMS_Deactivate(object sender, EventArgs e)
{
tc.HideCaret(); // Hide the pseudo caret
}
void tc_Leave(object sender, EventArgs e)
{
tc.ShowCaret();// Show the pseudo caret
}
void tc_Enter(object sender, EventArgs e)
{
tc.HideCaret();// Hide the pseudo caret
}
//void displayRO_EnabledChanged(object sender, EventArgs e)
//{

View File

@ -36,6 +36,7 @@ namespace Volian.Controls.Library
this.bottomDocDockSite = new DevComponents.DotNetBar.DockSite();
this.fillDocDockSite = new DevComponents.DotNetBar.DockSite();
this._MyBar = new DevComponents.DotNetBar.Bar();
this._PnlCaret = new System.Windows.Forms.Panel();
this.leftDocDockSite = new DevComponents.DotNetBar.DockSite();
this.rightDocDockSite = new DevComponents.DotNetBar.DockSite();
this.bottomBarDockSite = new DevComponents.DotNetBar.DockSite();
@ -44,8 +45,10 @@ namespace Volian.Controls.Library
this.topBarDockSite = new DevComponents.DotNetBar.DockSite();
this.topDocDockSite = new DevComponents.DotNetBar.DockSite();
this.superTooltip1 = new DevComponents.DotNetBar.SuperTooltip();
this.tmrCaret = new System.Windows.Forms.Timer(this.components);
this.fillDocDockSite.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this._MyBar)).BeginInit();
this._MyBar.SuspendLayout();
this.SuspendLayout();
//
// dotNetBarManager1
@ -60,7 +63,6 @@ namespace Volian.Controls.Library
this.dotNetBarManager1.AutoDispatchShortcuts.Add(DevComponents.DotNetBar.eShortcut.Del);
this.dotNetBarManager1.AutoDispatchShortcuts.Add(DevComponents.DotNetBar.eShortcut.Ins);
this.dotNetBarManager1.BottomDockSite = this.bottomDocDockSite;
this.dotNetBarManager1.DefinitionName = "";
this.dotNetBarManager1.EnableFullSizeDock = false;
this.dotNetBarManager1.FillDockSite = this.fillDocDockSite;
this.dotNetBarManager1.LeftDockSite = this.leftDocDockSite;
@ -114,7 +116,9 @@ namespace Volian.Controls.Library
this._MyBar.CanHide = true;
this._MyBar.CanUndock = false;
this._MyBar.CloseSingleTab = true;
this._MyBar.Controls.Add(this._PnlCaret);
this._MyBar.DockTabAlignment = DevComponents.DotNetBar.eTabStripAlignment.Top;
this._MyBar.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this._MyBar.LayoutType = DevComponents.DotNetBar.eLayoutType.DockContainer;
this._MyBar.Location = new System.Drawing.Point(0, 0);
this._MyBar.Name = "_MyBar";
@ -125,6 +129,16 @@ namespace Volian.Controls.Library
this._MyBar.TabNavigation = true;
this._MyBar.TabStop = false;
//
// _PnlCaret
//
this._PnlCaret.BackColor = System.Drawing.Color.Red;
this._PnlCaret.Location = new System.Drawing.Point(5, 5);
this._PnlCaret.Margin = new System.Windows.Forms.Padding(0);
this._PnlCaret.Name = "_PnlCaret";
this._PnlCaret.Size = new System.Drawing.Size(142, 16);
this._PnlCaret.TabIndex = 1;
this._PnlCaret.Visible = false;
//
// leftDocDockSite
//
this.leftDocDockSite.AccessibleRole = System.Windows.Forms.AccessibleRole.Window;
@ -202,6 +216,11 @@ namespace Volian.Controls.Library
//
this.superTooltip1.LicenseKey = "F962CEC7-CD8F-4911-A9E9-CAB39962FC1F";
//
// tmrCaret
//
this.tmrCaret.Interval = 500;
this.tmrCaret.Tick += new System.EventHandler(this.tmrCaret_Tick);
//
// DisplayTabControl
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
@ -219,6 +238,7 @@ namespace Volian.Controls.Library
this.Size = new System.Drawing.Size(673, 383);
this.fillDocDockSite.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this._MyBar)).EndInit();
this._MyBar.ResumeLayout(false);
this.ResumeLayout(false);
}
@ -240,5 +260,7 @@ namespace Volian.Controls.Library
//private DevComponents.DotNetBar.DockContainerItem dockContainerItem2;
//private DevComponents.DotNetBar.DockContainerItem dockContainerItem3;
private DevComponents.DotNetBar.SuperTooltip superTooltip1;
private System.Windows.Forms.Panel _PnlCaret;
private System.Windows.Forms.Timer tmrCaret;
}
}

View File

@ -33,6 +33,7 @@ namespace Volian.Controls.Library
private int _UniqueBarCount;
private ItemInfo _MyItemInfo = null;
private EditItem _MyEditItem = null;
private StepRTB _MyStepRTB = null;
private bool _RibbonExpanded=true;
public bool RibbonExpanded
{
@ -155,11 +156,16 @@ namespace Volian.Controls.Library
{
_MyItemInfo = args.MyItemInfo;
_MyEditItem = args.MyEditItem;
if (_MyEditItem != null)
_MyStepRTB = _MyEditItem.MyStepRTB;
else
_MyStepRTB = null;
}
else
{
_MyItemInfo = null;
_MyEditItem = null;
_MyStepRTB = null;
}
if (ItemSelectedChanged != null) ItemSelectedChanged(sender, args);
}
@ -471,6 +477,54 @@ namespace Volian.Controls.Library
{
get { return _MyBar; }
}
public Panel PnlCaret
{
get { return _PnlCaret; }
}
public void ShowCaret()
{
if (_MyStepRTB != null)
{
if (!_MyStepRTB.Visible)
_MyStepRTB.Visible = true;
if (_MyStepRTB.SelectionLength == 0)
{
Point pt = _MyStepRTB.GetPositionFromCharIndex(_MyStepRTB.SelectionStart);
pt = _MyStepRTB.PointToScreen(pt);
pt = this.PointToClient(pt);
PnlCaret.Location = pt;
PnlCaret.BackColor = _MyStepRTB.ForeColor;
using (Graphics gr = this.CreateGraphics())
{
SizeF sf = gr.MeasureString("Mg", _MyStepRTB.SelectionFont);
sf.Width = 1;
PnlCaret.Size = sf.ToSize();
}
tmrCaret.Enabled = true;
}
else
{
_MyStepRTB.SelectionColor = Color.White;
_MyStepRTB.SelectionBackColor = Color.FromName("Highlight");
}
}
}
public void HideCaret()
{
if (_MyStepRTB != null && ! _MyStepRTB.Disposing)
{
if (_MyStepRTB.SelectionLength == 0)
{
tmrCaret.Enabled = false;
PnlCaret.Visible = false;
}
else
{
_MyStepRTB.SelectionColor = _MyStepRTB.ForeColor;
_MyStepRTB.SelectionBackColor = _MyStepRTB.BackColor;
}
}
}
#endregion
#region Private Methods
///// <summary>
@ -686,5 +740,9 @@ namespace Volian.Controls.Library
myDisplayTabItem.Dispose();
}
#endregion
private void tmrCaret_Tick(object sender, EventArgs e)
{
PnlCaret.Visible = !PnlCaret.Visible;
}
}
}

View File

@ -123,4 +123,7 @@
<metadata name="superTooltip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>168, 17</value>
</metadata>
<metadata name="tmrCaret.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>295, 17</value>
</metadata>
</root>

View File

@ -30,6 +30,7 @@ namespace Volian.Controls.Library
* the contentmenu to support table options and a last item that supports existing
* contextmenu
* 5) RHM Copy step - including modifying SQL code to copy grid/image data.
* The Grid includes links which also need to be updated.
* 6) RHM Selection is NOT selection, i.e. if merged cells, selection isn't selecting the 'merged'
* i.e. parent cell.
* 7) RHM Selecting a range can end up with uneven rows or uneven columns. We need to handle,
@ -197,10 +198,17 @@ namespace Volian.Controls.Library
}
void MyStepRTB_EditModeChanged(object sender, EventArgs args)
{
AdjustColorsForEditMode();
}
private void AdjustColorsForEditMode()
{
if (MyStepRTB.EditMode)
{
MyFlexGrid.Styles["Focus"].ForeColor = MyFlexGrid.Styles["Focus"].BackColor =
MyFlexGrid.Styles["Highlight"].ForeColor = MyFlexGrid.Styles["Highlight"].BackColor = Color.SkyBlue;
}
else
{
MyFlexGrid.Styles["Focus"].ForeColor = MyFlexGrid.Styles["Highlight"].ForeColor = Color.Black;
@ -587,7 +595,7 @@ namespace Volian.Controls.Library
}
public override void SetActive()
{
MyFlexGrid.Styles["Focus"].BackColor = MyFlexGrid.Styles["Highlight"].BackColor = Color.LightCyan;
AdjustColorsForEditMode();
}
private bool _Empty = false;
public override bool Empty

View File

@ -532,6 +532,7 @@ namespace Volian.Controls.Library
}
private void SetUpStepRTB()
{
DetectUrls = false;
C1SpellChecker2.SetActiveSpellChecking(this, true);
this.Height = 10; // initialize the height to 10, the default height was too big for the cells in grid tables
BorderStyle = System.Windows.Forms.BorderStyle.None;
@ -893,7 +894,7 @@ namespace Volian.Controls.Library
{
string fonttab = FontTable;
string fontsize = FontSize;
this.DetectUrls = false;
//if (this.DetectUrls) this.DetectUrls = false;
if (SelectionLength > 0)HandleDeleteKeyWithSelectedText(new KeyEventArgs(Keys.None), null);
int position = SelectionStart;
SelectionLength = 0;
@ -905,7 +906,7 @@ namespace Volian.Controls.Library
}
private void AddLink50(string linkValue, string linkUrl)
{
this.DetectUrls = false;
//this.DetectUrls = false;
int position = SelectionStart;
SelectionLength = 0;
SelectedRtf = string.Format(@"{{\rtf\field{{\*\fldinst{{HYPERLINK ""www.volian.com #{0}"" }}}}{{\fldrslt{{\cf2\ul {1}}}}}}}", linkUrl, linkValue);