예제 #1
0
        /// <summary>
        /// 打开MDI子窗体
        /// </summary>
        /// <param name="mdi">MDI主窗体</param>
        /// <param name="formType">子窗体的类型</param>
        /// <returns></returns>
        public static Form OpenChildForm(IMdiForm mdi, Type formType)
        {
            try
            {
                Cursor.Current = Cursors.WaitCursor;
                Form child = ActiveChildForm(mdi as Form, formType.ToString());
                if (child != null)
                {
                    child.Show(); return(child);
                }

                Form form = (Form)formType.Assembly.CreateInstance(formType.FullName);
                if (form != null && form is Form)
                {
                    child = form as Form;

                    if (form is IMdiChildForm)
                    {
                        (child as IMdiChildForm).ToolbarRegister = mdi.MdiToolbar;
                        (child as IMdiChildForm).RegisterObserver(mdi.MdiObservers);
                        child.MdiParent = (Form)mdi;
                    }
                    child.Show();
                    return(child);
                }
                else
                {
                    throw new Exception("未知窗体类型!");
                }
            }
            finally
            {
                Cursor.Current = Cursors.Default;
            }
        }
예제 #2
0
        /// <summary>
        /// 生成权限管理树视图 - 第一级树结点
        /// </summary>
        public void InitAuthorityTree()
        {
            try
            {
                //取按钮自定义名称数据表
                _FormTagCustomName = _MyBridge.GetFormTagCustomName();

                this._treeAuthority.BeforeCheck += new TreeViewCancelEventHandler(OnTreeAuthorityBeforeCheck);
                this._treeAuthority.AfterCheck  -= new TreeViewEventHandler(OnTreeAuthorityAfterCheck);
                this._treeAuthority.Nodes.Clear();
                this._treeAuthority.BeginUpdate();

                IMdiForm mainForm = (IMdiForm)_treeAuthority.FindForm().ParentForm;//取MDI主窗体的主菜单

                //枚举主窗体的菜单
                foreach (ToolStripItem item in mainForm.MainMenu.Items)
                {
                    if (item is ToolStripSeparator)
                    {
                        continue;                             //菜单分隔符不处理
                    }
                    if (item.Tag != null && item.Tag.ToString().ToUpper() == "IsSystemMenu".ToUpper())
                    {
                        continue;                                                                                //系统菜单不处理
                    }
                    if (!Loginer.CurrentUser.IsAdmin() && !item.Enabled)
                    {
                        continue;                                                  //没菜单权限(菜单不可用).不加载树
                    }
                    AuthNodeTag tag = new AuthNodeTag(item.Name, null, item);

                    TreeNode node = new TreeNode(item.Text, 0, 0);
                    node.ImageIndex         = 0;
                    node.SelectedImageIndex = 0;
                    node.Tag = tag; //标记

                    this._treeAuthority.Nodes.Add(node);

                    //处理子菜单
                    if (item is ToolStripMenuItem && (item as ToolStripMenuItem).DropDownItems.Count > 0)
                    {
                        InitAuthorityTreeChild(item as ToolStripMenuItem, node);
                        node.Expand();
                    }
                }

                this._treeAuthority.EndUpdate();
                if (this._treeAuthority.Nodes.Count == 1)
                {
                    this._treeAuthority.Nodes[0].Expand();
                }
            }
            finally
            {
                this._treeAuthority.AfterCheck += new TreeViewEventHandler(OnTreeAuthorityAfterCheck);
            }
        }
예제 #3
0
        /// <summary>
        /// 显示模块主窗体容器的按钮
        /// </summary>
        public override void InitButtons()
        {
            IMdiForm mdi = (IMdiForm)this.MdiParent;

            _buttons.AddRange(mdi.MdiButtons);

            _buttons.GetButtonByName("btnClose").Enable = false;
            this.ControlBox = false;
        }
예제 #4
0
        /// <summary>
        /// 打开子窗体.
        /// </summary>
        /// <param name="mdi">MDI主窗体</param>
        /// <param name="formType">子窗体的类型</param>
        /// <param name="ToolStripMenuItem">打开窗体的菜单项</param>
        public static Form OpenChildForm(IMdiForm mdi, Type formType, ToolStripMenuItem sender)
        {
            try
            {
                Cursor.Current = Cursors.WaitCursor;
                Form form = ActiveChildForm(mdi as Form, formType.ToString()); //试图激活已打开的子窗体
                if (form != null)
                {
                    form.Show(); return(form);
                }                                               //如子窗体已打开显示子窗体并退出

                //通过反射创建窗体实例.
                form = (Form)formType.Assembly.CreateInstance(formType.FullName);

                //创建窗体实例失败
                if (form == null)
                {
                    throw new Exception("未知窗体类型!");
                }

                //是系统定义的子窗体
                if (form is IMdiChildForm)
                {
                    form.MdiParent = (Form)mdi;                                 //设置主窗体

                    (form as IMdiChildForm).ToolbarRegister = mdi.MdiToolbar;   //绑定主窗体的Toolbar对象
                    (form as IMdiChildForm).RegisterObserver(mdi.MdiObservers); //注册子窗体的观察者
                }

                //支持权限控制的子窗体
                if (form is IPurviewControllable)
                {
                    if (sender != null && sender.Tag is MenuItemTag)
                    {
                        MenuItemTag tag  = sender.Tag as MenuItemTag;
                        int         auth = new bllGroupAuthority().GetFormAuthority(Loginer.CurrentUser.Account, tag.ModuleID, sender.Name); //获取窗体的权限
                        (form as IPurviewControllable).FormAuthorities = auth;                                                               //本窗体的权限值
                        (form as IPurviewControllable).FormMenuName    = sender.Name;                                                        //绑定打开窗体的菜单名
                    }
                }

                form.Show();//显示窗体
                return(form);
            }
            catch (Exception ex)
            {
                Msg.Warning("打开窗体时出现错误!\r\n" + ex.Message);
                return(null);
            }
            finally
            {
                Cursor.Current = Cursors.Default;
            }
        }
예제 #5
0
        private void btnGen_Click(object sender, EventArgs e)
        {
            if (ValidateWizard())
            {
                //查找目标窗体是否打开
                Form targetForm = MdiTools.FindForm(this.CurrentItem.TargetFormType.FullName);

                if (targetForm == null)                                                             //没有打开目标窗体,程序自动打开
                {
                    IMdiForm mainForm = MdiTools.MdiMainForm as IMdiForm;                           //MDI主窗体
                    targetForm = MdiTools.OpenChildForm(mainForm, this.CurrentItem.TargetFormType); //打开目标窗体
                }
                else
                {
                    if (!(targetForm is IBusinessSupportable))
                    {
                        Msg.Warning("不支持生成目标窗体的数据!");
                        return; //不是MDI子窗体,退出
                    }

                    if ((targetForm as IDataOperatable).DataChanged)
                    {
                        Msg.Warning("目标窗体 '" + this.CurrentItem.TargetFormName +
                                    "' 正在修改数据!请保存或取消修改后才能生成!");
                        return;
                    }
                    targetForm.Activate(); //目标窗体已打开,激活显示
                }

                //调用目标窗体的新增方法
                (targetForm as IDataOperatable).DoAdd(null);

                //开始生成单据
                _GenSuccess = this.CurrentItem.Generate((targetForm as frmBaseBusinessForm).BLL);

                if (_GenSuccess)
                {
                    Msg.ShowInformation("生成单据成功,请修改相关数据然后保存!");
                    this.Close();
                    targetForm.Activate();//显示目标窗体
                }
                else
                {
                    Msg.ShowError("生成单据失败!");
                }
            }
        }
예제 #6
0
        internal void OpenForm(IMdiForm form, string title)
        {
            try
            {
                Cursor.Current = Cursors.WaitCursor;


                var formTitle = " " + title + " ";

                if (MdiChildren.Count() != 0)
                {
                    if (FindWindow(formTitle))
                    {
                        ((Form)form).Dispose();
                        return;
                    }
                }

                var frm = (Form)form;
                frm.MdiParent = this;
                ((MdiClientForm)frm).Title = formTitle;
                frm.Tag = formTitle;


                frm.WindowState = FormWindowState.Minimized;
                frm.Show();
                frm.WindowState = FormWindowState.Maximized;
                frm.Update();


                App.LogAction("Main", "Opened " + title);
                Cursor.Current = Cursors.Default;
            }
            catch (Exception ex)
            {
                MessageDialog.ShowError(ex, this);
            }
        }
예제 #7
0
        /// <summary>
        /// 生成权限管理树视图 - 第一级树结点
        /// </summary>
        public void InitAuthorityTree()
        {
            try
            {
                //取按钮自定义名称数据表
                _FormTagCustomName = _MyBridge.GetFormTagCustomName();

                this._treeAuthority.BeforeCheck += new TreeViewCancelEventHandler(OnTreeAuthorityBeforeCheck);
                this._treeAuthority.AfterCheck  -= new TreeViewEventHandler(OnTreeAuthorityAfterCheck);
                this._treeAuthority.Nodes.Clear();
                this._treeAuthority.BeginUpdate();

                IMdiForm mainForm = (IMdiForm)_treeAuthority.FindForm().ParentForm;//取MDI主窗体的主菜单

                //枚举主窗体的菜单
                foreach (ToolStripItem item in mainForm.MainMenu.Items)
                {
                    if (item is ToolStripSeparator)
                    {
                        continue;                             //菜单分隔符不处理
                    }
                    if (item.Tag != null && item.Tag.ToString().ToUpper() == "IsSystemMenu".ToUpper())
                    {
                        continue;                                                                                //系统菜单不处理
                    }
                    if (!Loginer.CurrentUser.IsAdmin() && !item.Enabled)
                    {
                        continue;                                                  //没菜单权限(菜单不可用).不加载树
                    }
                    AuthNodeTag tag     = new AuthNodeTag(item.Name, null, item);
                    string      sfilter = string.Format(tb_sys_Function.FNumber + "='{0}'", item.Name);
                    DataRow[]   rsF     = DataDictCache.Cache.Function.Select(sfilter);
                    if (rsF.Length > 0)
                    {
                        tag.DataRow = rsF[0];
                    }
                    string sCon = tb_sys_Function.FNumber + " = '" + tag.AuthID + "'";
                    tag.FUnctionID = bllComDataBaseTool.GetTableFieldValue(tb_sys_Function.__TableName, tb_sys_Function.__KeyName, sCon);
                    if (tag.FUnctionID == "")
                    {
                        tag.FUnctionID = "0";
                    }
                    TreeNode node = new TreeNode(item.Text, 0, 0);
                    node.ImageIndex         = 0;
                    node.SelectedImageIndex = 0;
                    node.Tag = tag; //标记

                    this._treeAuthority.Nodes.Add(node);

                    //处理子菜单
                    if (item is ToolStripMenuItem && (item as ToolStripMenuItem).DropDownItems.Count > 0)
                    {
                        InitAuthorityTreeChild(item as ToolStripMenuItem, node);
                        node.Expand();
                    }
                }

                this._treeAuthority.EndUpdate();
                if (this._treeAuthority.Nodes.Count == 1)
                {
                    this._treeAuthority.Nodes[0].Expand();
                }
            }
            finally
            {
                this._treeAuthority.AfterCheck += new TreeViewEventHandler(OnTreeAuthorityAfterCheck);
            }
        }
예제 #8
0
        /// <summary>
        /// 打开子窗体.
        /// </summary>
        /// <param name="mdi">MDI主窗体</param>
        /// <param name="formType">子窗体的类型</param>
        /// <param name="ToolStripMenuItem">打开窗体的菜单项</param>
        public static Form OpenChildForm(IMdiForm mdi, Type formType, ToolStripMenuItem sender)
        {
            try
            {
                Cursor.Current = Cursors.WaitCursor;
                Form form = ActiveChildForm(mdi as Form, formType.ToString()); //试图激活已打开的子窗体
                if (form != null)
                {
                    form.Show(); return(form);
                }                                               //如子窗体已打开显示子窗体并退出

                //通过反射创建窗体实例.
                form = (Form)formType.Assembly.CreateInstance(formType.FullName);

                //创建窗体实例失败
                if (form == null)
                {
                    throw new Exception("未知窗体类型!");
                }

                //是系统定义的子窗体
                if (form is IMdiChildForm)
                {
                    form.MdiParent = (Form)mdi;                                 //设置主窗体

                    (form as IMdiChildForm).ToolbarRegister = mdi.MdiToolbar;   //绑定主窗体的Toolbar对象
                    (form as IMdiChildForm).RegisterObserver(mdi.MdiObservers); //注册子窗体的观察者
                }

                //支持权限控制的子窗体
                if (form is IPurviewControllable)
                {
                    if (sender != null && sender.Tag is MenuItemTag)
                    {
                        MenuItemTag tag = sender.Tag as MenuItemTag;
                        //int auth = new bllGroupAuthority().GetFormAuthority(Loginer.CurrentUser.Account, tag.ModuleID, sender.Name); //获取窗体的权限
                        //if (auth < 1 && (!Loginer.CurrentUser.IsAdmin()))
                        //{
                        int       auth     = 0;
                        int       authShow = 0;
                        DataRow[] rows     = SystemAuthentication.UserAuthorities.Select(string.Format("FNUM='{0}' ", sender.Name));
                        //int auth = new bllGroupAuthority().GetFormAuthority(Loginer.CurrentUser.Account, tag.ModuleID, sender.Name); //获取窗体的权限
                        if (rows.Length < 1 && (!Loginer.CurrentUser.IsAdmin()))
                        {
                            Msg.ShowError("您没有" + sender.Text + "的权限");
                            return(null);
                        }
                        else
                        {
                            if (rows.Length > 0)
                            {
                                auth = Convert.ToInt32(rows[0]["FAUTHS"]);
                            }

                            DataRow[] rs = DataDictCache.Cache.Function.Select(string.Format("FNumber='{0}'", sender.Name));
                            if (rs.Length > 0)
                            {
                                if (auth == 0)
                                {
                                    auth = Convert.ToInt32(rs[0]["FAUTHS"]);
                                }
                                authShow = Convert.ToInt32(rs[0]["FAUTHS"]);
                            }
                            (form as IPurviewControllable).FormAuthorities     = auth;                                          //本窗体工具栏的权限值
                            (form as IPurviewControllable).FormAuthoritiesShow = authShow;                                      //本窗体工具栏的权限值
                            (form as IPurviewControllable).FormMenuName        = sender.Name;                                   //绑定打开窗体的菜单名
                            (form as IPurviewControllable).FunctionID          = bllComDataBaseTool.GetFunctionID(sender.Name); //功能ID
                        }
                    }
                }

                form.Show();//显示窗体
                return(form);
            }
            catch (Exception ex)
            {
                Msg.Warning("打开窗体时出现错误!\r\n" + ex.Message);
                return(null);
            }
            finally
            {
                Cursor.Current = Cursors.Default;
            }
        }
예제 #9
0
        /// <summary>
        /// 打开子窗体.
        /// </summary>
        /// <param name="mdi">MDI主窗体</param>
        /// <param name="formType">子窗体的类型</param>
        /// <param name="ToolStripMenuItem">打开窗体的菜单项</param>
        public static Form OpenChildForm(IMdiForm mdi, Type formType, ToolStripMenuItem sender)
        {
            try
            {
                Cursor.Current = Cursors.WaitCursor;
                Form form = ActiveChildForm(mdi as Form, formType.ToString()); //试图激活已打开的子窗体
                if (form != null) { form.Show(); return form; } //如子窗体已打开显示子窗体并退出

                //通过反射创建窗体实例.
                form = (Form)formType.Assembly.CreateInstance(formType.FullName);

                //创建窗体实例失败
                if (form == null) throw new Exception("未知窗体类型!");

                //是系统定义的子窗体
                if (form is IMdiChildForm)
                {
                    form.MdiParent = (Form)mdi; //设置主窗体

                    (form as IMdiChildForm).ToolbarRegister = mdi.MdiToolbar; //绑定主窗体的Toolbar对象
                    (form as IMdiChildForm).RegisterObserver(mdi.MdiObservers); //注册子窗体的观察者
                }

                //支持权限控制的子窗体
                if (form is IPurviewControllable)
                {
                    if (sender != null && sender.Tag is MenuItemTag)
                    {
                        MenuItemTag tag = sender.Tag as MenuItemTag;
                        //int auth = new bllGroupAuthority().GetFormAuthority(Loginer.CurrentUser.Account, tag.ModuleID, sender.Name); //获取窗体的权限
                        //if (auth < 1 && (!Loginer.CurrentUser.IsAdmin()))
                        //{
                        int auth = 0;
                        int authShow = 0;
                        DataRow[] rows = SystemAuthentication.UserAuthorities.Select(string.Format("FNUM='{0}' ", sender.Name));
                        //int auth = new bllGroupAuthority().GetFormAuthority(Loginer.CurrentUser.Account, tag.ModuleID, sender.Name); //获取窗体的权限
                        if (rows.Length < 1 && (!Loginer.CurrentUser.IsAdmin()))
                        {
                            Msg.ShowError("您没有" + sender.Text + "的权限");
                            return null;
                        }
                        else
                        {
                            if (rows.Length > 0)
                                auth = Convert.ToInt32(rows[0]["FAUTHS"]);

                            DataRow[] rs = DataDictCache.Cache.Function.Select(string.Format("FNumber='{0}'", sender.Name));
                            if (rs.Length > 0)
                            {
                                if (auth == 0)
                                    auth = Convert.ToInt32(rs[0]["FAUTHS"]);
                                authShow = Convert.ToInt32(rs[0]["FAUTHS"]);
                            }
                            (form as IPurviewControllable).FormAuthorities = auth; //本窗体工具栏的权限值
                            (form as IPurviewControllable).FormAuthoritiesShow = authShow; //本窗体工具栏的权限值
                            (form as IPurviewControllable).FormMenuName = sender.Name;//绑定打开窗体的菜单名
                            (form as IPurviewControllable).FunctionID = bllComDataBaseTool.GetFunctionID(sender.Name);//功能ID
                        }
                    }
                }

                form.Show();//显示窗体
                return form;
            }
            catch (Exception ex)
            {
                Msg.Warning("打开窗体时出现错误!\r\n" + ex.Message);
                return null;
            }
            finally
            {
                Cursor.Current = Cursors.Default;
            }
        }
예제 #10
0
        /// <summary>
        /// 打开MDI子窗体
        /// </summary>
        /// <param name="mdi">MDI主窗体</param>
        /// <param name="formType">子窗体的类型</param>
        /// <returns></returns>
        public static Form OpenChildForm(IMdiForm mdi, Type formType)
        {
            try
            {
                Cursor.Current = Cursors.WaitCursor;
                Form child = ActiveChildForm(mdi as Form, formType.ToString());
                if (child != null) { child.Show(); return child; }

                Form form = (Form)formType.Assembly.CreateInstance(formType.FullName);
                if (form != null && form is Form)
                {
                    child = form as Form;

                    if (form is IMdiChildForm)
                    {
                        (child as IMdiChildForm).ToolbarRegister = mdi.MdiToolbar;
                        (child as IMdiChildForm).RegisterObserver(mdi.MdiObservers);
                        child.MdiParent = (Form)mdi;
                    }
                    child.Show();
                    return child;
                }
                else
                    throw new Exception("未知窗体类型!");
            }
            finally
            {
                Cursor.Current = Cursors.Default;
            }
        }