/// <summary> /// Informs any Form that is registered in TFormsList about a specific 'Forms Message' /// that is being 'broadcasted'. /// </summary> /// <remarks>The individual Form can choose to 'listen' to such 'Forms Message' broadcasts /// by implementing the Method 'ProcessFormsMessage'. Once this is done, the Forms' /// 'ProcessFormsMessage' Method will be called each time a 'Forms Message' broadcast occurs. /// </remarks> /// <param name="AFormsMessage">An instance of a 'Forms Message'. This can be inspected /// for parameters in the Method Body of a Forms' 'ProcessFormsMessage' Method and /// the Form can use those to choose whether to react on the Message, or not.</param> /// <returns>The Number of Forms that reacted on the 'Forms Message'.</returns> public int BroadcastFormMessage(TFormsMessage AFormsMessage) { System.Windows.Forms.Form FormInstance; IDictionaryEnumerator DictEnum; int FormsThatReacted = 0; DictEnum = this.GetEnumerator(); while (DictEnum.MoveNext()) { FormInstance = (System.Windows.Forms.Form)DictEnum.Value; var Type = FormInstance.GetType(); MethodInfo Method = Type.GetMethod("ProcessFormsMessage"); // Does form contain the method "ProcessFormsMessage"? // If so, call it. if ((Method != null) && ((bool)Method.Invoke(FormInstance, new object[] { AFormsMessage }) == true)) { // MessageBox.Show("BroadcastFormMessage: FormInstance = " + FormInstance.Name); FormsThatReacted++; } } // MessageBox.Show("FormsThatListened: " + FormsThatListened.ToString()); return(FormsThatReacted); }
/// <summary> /// todoComment /// </summary> /// <returns></returns> public String OpenForms() { String ReturnValue = ""; System.Windows.Forms.Form FormInstance; IDictionaryEnumerator DictEnum; DictEnum = GetEnumerator(); while (DictEnum.MoveNext()) { FormInstance = (System.Windows.Forms.Form)DictEnum.Value; ReturnValue += String.Format(StrPrintFormat, new Object[] { FormInstance.Name, FormInstance.Text }) + "\r\n"; } return(ReturnValue); }
/// <summary> /// todoComment /// </summary> /// <param name="AValue"></param> /// <returns></returns> public Boolean Contains(System.Windows.Forms.Form AValue) { System.Windows.Forms.Form FormInstance; IDictionaryEnumerator DictEnum; DictEnum = GetEnumerator(); while (DictEnum.MoveNext()) { FormInstance = (System.Windows.Forms.Form)DictEnum.Value; if (FormInstance.GetType().ToString().StartsWith(AValue.Text)) { return(true); } } return(false); }
/// <summary> /// todoComment /// </summary> /// <param name="ADontCloseForm"></param> /// <returns></returns> public Boolean CloseAllExceptOne(System.Windows.Forms.Form ADontCloseForm) { System.Windows.Forms.Form FormInstance; IDictionaryEnumerator DictEnum; System.Object OldKey; try { DictEnum = GetEnumerator(); while (DictEnum.MoveNext()) { FormInstance = (System.Windows.Forms.Form)DictEnum.Value; OldKey = DictEnum.Key; if ((ADontCloseForm == null) || (FormInstance.GetType() != ADontCloseForm.GetType())) { // MessageBox.Show('ADontCloseForm.GetType: ' + ADontCloseForm.GetType().ToString); // MessageBox.Show('About to close Form: ' + FormInstance.GetType().ToString + '; Title: ' + FormInstance.Text); FormInstance.Close(); // make sure the form really has been removed; otherwise it could be an endless loop if (Dictionary.Contains(OldKey) == true) { Dictionary.Remove(OldKey); } /* * Need to go back to the beginning of the enumerator because the Enumerator won't work * anymore after a Form has been closed (when a Form closes it removes * itself from the FormsList)! */ DictEnum = GetEnumerator(); } } } catch (Exception Exp) { MessageBox.Show("TFormsList.CloseAll: Exception occured while trying to close forms: " + Exp.ToString()); return(false); } return(true); }
/// <summary> /// todoComment /// </summary> /// <param name="ATitle"></param> /// <returns></returns> private System.Windows.Forms.Form GetFormByTitle(String ATitle) { System.Windows.Forms.Form FormInstance; IDictionaryEnumerator DictEnum; DictEnum = GetEnumerator(); while (DictEnum.MoveNext()) { FormInstance = (System.Windows.Forms.Form)DictEnum.Value; // MessageBox.Show('GetForm: FormInstance: ' + FormInstance.GetType().ToString); if (FormInstance.Text.StartsWith(ATitle)) { return(FormInstance); } } return(null); }
/// <summary> /// todoComment /// </summary> /// <param name="AWindowHandle"></param> /// <returns></returns> public System.Windows.Forms.Form GetFormByHandle(IntPtr AWindowHandle) { System.Windows.Forms.Form FormInstance; IDictionaryEnumerator DictEnum; DictEnum = GetEnumerator(); while (DictEnum.MoveNext()) { FormInstance = (System.Windows.Forms.Form)DictEnum.Value; if (!FormInstance.IsDisposed) { if (FormInstance.Handle == AWindowHandle) { return(FormInstance); } } } return(null); }
/// <summary>todoComment</summary> public System.Windows.Forms.Form this[string AKey] { get { System.Windows.Forms.Form ReturnValue; IDictionaryEnumerator DictEnum; ReturnValue = null; DictEnum = GetEnumerator(); while (DictEnum.MoveNext()) { // MessageBox.Show('GetForm: DictEnum.Key: ' + DictEnum.Key.ToString); if (DictEnum.Key.ToString().StartsWith(AKey)) { ReturnValue = (System.Windows.Forms.Form)DictEnum.Value; return(ReturnValue); } } return(ReturnValue); } set { IDictionaryEnumerator DictEnum; DictEnum = GetEnumerator(); while (DictEnum.MoveNext()) { // MessageBox.Show('GetForm: DictEnum.Key: ' + DictEnum.Key.ToString); if (DictEnum.Key.ToString().StartsWith(AKey)) { Dictionary[DictEnum.Value] = value; return; } } } }
/// <summary> /// todoComment /// </summary> /// <param name="ANonClosableForms"></param> /// <param name="AFirstNonCloseableFormKey"></param> /// <returns></returns> public Boolean CanCloseAll(out StringCollection ANonClosableForms, out String AFirstNonCloseableFormKey) { System.Windows.Forms.Form FormInstance; IDictionaryEnumerator DictEnum; String NonCloseableForm; ANonClosableForms = new StringCollection(); AFirstNonCloseableFormKey = ""; DictEnum = GetEnumerator(); while (DictEnum.MoveNext()) { FormInstance = (System.Windows.Forms.Form)DictEnum.Value; if (FormInstance is IFrmPetraEdit) { if (!((IFrmPetraEdit)FormInstance).CanClose()) { NonCloseableForm = FormInstance.Text; if (((TFrmPetraEditUtils)((IFrmPetraEdit)FormInstance).GetPetraUtilsObject()).HasChanges) { NonCloseableForm = NonCloseableForm + PetraEditForm.FORM_CHANGEDDATAINDICATOR; } ANonClosableForms.Add(NonCloseableForm); if (ANonClosableForms.Count == 1) { AFirstNonCloseableFormKey = DictEnum.Key.ToString(); } } } } return(ANonClosableForms.Count == 0); }