B2018-071 PROMs was crashing during automated testing or print all procedures. Error Handling was added to keep the code from crashing.

B2018-070 The MS Word Panel was getting focus when the step editor was active if the PROMS window was resized or if a step with an annotation received focus.  PROMS code was changed so that Word recieves focus when the Word Panel is active.
This commit is contained in:
Rich 2018-05-09 13:36:04 +00:00
parent b5df7ffc1c
commit 71367cf81f
2 changed files with 35 additions and 8 deletions

View File

@ -1442,7 +1442,14 @@ namespace VEPROMS.CSLA.Library
void CloseWordApp_Tick(object sender, EventArgs e)
{
Enabled = false;
MyApp.Quit(false);
try // B2018-071 Keep code from crashing on close of MS Word
{
MyApp.Quit(false);
}
catch (Exception ex)
{
_MyLog.WarnFormat("MyApp Quit {0} {1}", ex.GetType().FullName, ex.Message);
}
Dispose();
}
}

View File

@ -119,6 +119,8 @@ namespace Volian.Controls.Library
_RefreshTimer.Interval = 500;// B2017-133 Edraw
ClientSizeChanged += new EventHandler(DSOTabPanel_ClientSizeChanged);
_RefreshTimer.Tick += new EventHandler(_RefreshTimer_Tick);
// B2018-070 Activate MS Word Panel
_RefreshTimer.Enabled = true;
_MyEdWord.BeforeDocumentSaved += _MyEdWord_BeforeDocumentSaved;// B2017-133 Edraw
}
void _MyEdWord_BeforeDocumentSaved(object sender, EventArgs e)// B2017-133 Edraw
@ -145,20 +147,23 @@ namespace Volian.Controls.Library
_RefreshTimer.Enabled = false;
if (_MyEdWord != null)// B2017-133 Edraw
{
_MyEdWord.Focus();
_MyEdWord.GotoItem(EDWordLib.WdGoToItem.wdGoToStart, EDWordLib.WdGoToDirection.wdGoToFirst);
//_MyEdWord.BringToFront();
//_MyEdWord.EndInit();
// B2018-070 Activate MS Word Panel
_MyEdWord.GotoItem(EDWordLib.WdGoToItem.wdGoToObject, EDWordLib.WdGoToDirection.wdGoToNext, 0, null);
}
//else
//{
// _MyDisplayTabControl.CloseTabItem(_MyDisplayTabItem);
//}
}
void DSOTabPanel_ClientSizeChanged(object sender, EventArgs e)
{
_RefreshTimer.Enabled = false; // This assures that interval is used from last event.
_RefreshTimer.Enabled = true;
// B2018-070 Use InDSOTabPanel to determine if the word panel should be activated - Activate MS Word Panel
if (_InDSOTabPanel)
{
_RefreshTimer.Enabled = false; // This assures that interval is used from last event.
_RefreshTimer.Enabled = true;
}
}
#endregion
#region Private Methods
@ -259,6 +264,8 @@ namespace Volian.Controls.Library
if (!float.TryParse(doc.Application.Version, out ver))
ver = 12.0F;
this.Enter += new EventHandler(DSOTabPanel_Enter);
// B2018-070 Use InDSOTabPanel to determine if the word panel should be activated - Activate MS Word Panel
this.Leave += DSOTabPanel_Leave;
Application.DoEvents();
// The following line corrects Symbol characters in MSWord Sections
// CheckForSymbolCharacters(doc);
@ -273,6 +280,12 @@ namespace Volian.Controls.Library
// TODO: Should try to do a direct open using Word.
}
}
void DSOTabPanel_Leave(object sender, EventArgs e)
{
// B2018-070 Use InDSOTabPanel to determine if the word panel should be activated - Activate MS Word Panel
_InDSOTabPanel = false;
}
public void FixSymbolCharacters()
{
CheckForSymbolCharacters(new LBDocumentClass(_MyEdWord.ActiveDocument()));// B2017-133 Edraw
@ -502,7 +515,8 @@ namespace Volian.Controls.Library
if (!IsBeingDeleted)
SaveDirty();
this.Enter -= new EventHandler(DSOTabPanel_Enter);
// this.Leave -= new EventHandler(DSOTabPanel_Leave);
// B2018-070 Use InDSOTabPanel to determine if the word panel should be activated - Activate MS Word Panel
this.Leave -= DSOTabPanel_Leave;
// SaveDirty(); // SaveDirty happens in CloseDSO(bool)
}
catch (Exception ex)
@ -576,6 +590,8 @@ namespace Volian.Controls.Library
}
public static bool IgnoreEnter = false;
private bool _In_DSOTabPanel_Enter=false;
// B2018-070 Use InDSOTabPanel to determine if the word panel should be activated - Activate MS Word Panel
private bool _InDSOTabPanel = false;
/// <summary>
/// When a Word document is selected make sure it's tab is activated and
/// the SelectedItem for the DisplayTabControl is updated.
@ -584,6 +600,8 @@ namespace Volian.Controls.Library
/// <param name="e"></param>
private void DSOTabPanel_Enter(object sender, EventArgs e)
{
// B2018-070 Use InDSOTabPanel to determine if the word panel should be activated - Activate MS Word Panel
_InDSOTabPanel = true;
if (IgnoreEnter) return;
_MyTransparentPanel.SendToBack();
@ -616,6 +634,8 @@ namespace Volian.Controls.Library
_MyEdWord.Focus();
_In_DSOTabPanel_Enter = false;
_MyDisplayTabControl.SelectedDisplayTabItem = MyDisplayTabItem;
// B2018-070 Position the text cursor - Activate MS Word Panel
_MyEdWord.GotoItem(EDWordLib.WdGoToItem.wdGoToObject, EDWordLib.WdGoToDirection.wdGoToNext, 0, null);
}
#endregion
#region Public Methods