public static bool ModifyGroup(IBaseWindow baseWin, ref GDMGroupRecord groupRec) { bool result; try { baseWin.Context.BeginUpdate(); GDMTree tree = baseWin.Context.Tree; using (var dlg = AppHost.ResolveDialog <IGroupEditDlg>(baseWin)) { bool exists = groupRec != null; if (!exists) { groupRec = new GDMGroupRecord(tree); groupRec.InitNew(); } try { baseWin.Context.LockRecord(groupRec); dlg.Group = groupRec; result = (AppHost.Instance.ShowModalX(dlg, false)); } finally { baseWin.Context.UnlockRecord(groupRec); } if (!exists) { if (result) { tree.AddRecord(groupRec); } else { groupRec.Dispose(); groupRec = null; } } } } finally { baseWin.Context.EndUpdate(); } return(result); }