예제 #1
0
        private void LinkClick(object sender, ItemClickEventArgs e)
        {
            try
            {
                string Chinh = e.Item.Name.ToString();
                if (ModifierKeys == Keys.Control && Chinh == "DaiLy")
                {
                }
                else
                {
                    foreach (var form in MdiChildren.Where(frm => frm.GetType().Name == "frm" + Chinh))
                    {
                        form.Activate();
                        return;
                    }
                }

                XuLyGiaoDien.wait.ShowWaitForm();
                var f = Activator.CreateInstance(Type.GetType(string.Format("CRM.frm{0}", Chinh), true)) as XtraForm;
                f.MdiParent = this;
                f.Text      = e.Item.Caption;
                f.Show();
                GridViewHelper.SetFromGrid(f);
                XuLyGiaoDien.FlushMemory();
            }
            catch
            {
                XtraMessageBox.Show("Chức năng chưa được tích hợp hoặc đang bảo trì");
            }
            if (XuLyGiaoDien.wait.IsSplashFormVisible)
            {
                XuLyGiaoDien.wait.CloseWaitForm();
            }
        }
예제 #2
0
 /// <summary>
 /// сохранить размеры окошка, координаты и его текущую вкладку
 /// </summary>
 private void SaveNonChartWindowsPlacement(TerminalBookmark leaving)
 {
     foreach (var child in MdiChildren.Where(c => c is IMdiNonChartWindow))
     {
         var windowCode = ((IMdiNonChartWindow)child).WindowCode;
         var wnd        = nonChartWindows.FirstOrDefault(w => w.Window == windowCode &&
                                                         ((leaving == null) || (w.ChartTab == leaving.Id)));
         if (wnd == null)
         {
             continue;
         }
         // размеры и координаты
         try
         {
             wnd.WindowPos       = child.Location;
             wnd.WindowSize      = child.Size;
             wnd.WindowState     = child.WindowState.ToString();
             wnd.CurrentTabIndex = ((IMdiNonChartWindow)child).WindowInnerTabPageIndex;
         }
         catch (ObjectDisposedException)
         {
             continue;
         }
     }
 }
예제 #3
0
        private void ShowBookmarkChildren(TerminalBookmark bookmark)
        {
            bookmarkStrip.SelectedBookmark = bookmark;

            var tabTag = bookmark.Id;

            // сохранить все окна графиков
            foreach (var child in Charts.Where(child => child.bookmarkId != tabTag))
            {
                child.SavePlacement();
                child.Hide();
            }

            // показать графики вкладки
            Charts.ForEach(c =>
            {
                try
                {
                    if (c.bookmarkId == tabTag)
                    {
                        c.Show();
                    }
                }
                catch (Exception ex)
                {
                    Logger.ErrorFormat("Переключение на вкладку {0}: {1}",
                                       tabTag, ex);
                    Logger.ErrorFormat("Window title is {0}", c.Text);
                    Logger.ErrorFormat("Ticker is {0}", c.chart.Symbol);
                    throw;
                }
            });

            Charts.ForEach(c =>
            {
                if (c.bookmarkId == tabTag)
                {
                    c.RestorePlacement();
                }
            });

            // убрать окна Счет, Доходность, Чат и прочие, если их нет на свежеоткрытой вкладке
            foreach (var child in MdiChildren.Where(c => c is IMdiNonChartWindow))
            {
                var windowCode = ((IMdiNonChartWindow)child).WindowCode;
                if (!nonChartWindows.Any(w => w.Window == windowCode && w.ChartTab == tabTag))
                {
                    child.Close();
                }
            }

            // показать окна (Счет, Доходность, Чат ...) текущей вкладки и установить им размеры
            foreach (var wind in nonChartWindows.Where(w => w.ChartTab == tabTag))
            {
                EnsureShowAndPlaceNonChartWindow(wind);
            }

            MenuItemVerticalClick(this, EventArgs.Empty);
        }
예제 #4
0
        private void ShowNewForm(object sender, EventArgs e)
        {
            dlgNieuw dlg = new dlgNieuw();

            if (dlg.ShowDialog() == DialogResult.OK)
            {
                string p = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "DrawIt");
                int    i = 1;
                switch (dlg.Resultaat)
                {
                case dlgNieuw.enNieuwDocType.Pictogram:
                    string[] t = MdiChildren.Where(T => T.GetType() == typeof(frmIcon)).Select(T => T.Text).ToArray();
                    while (File.Exists(Path.Combine(p, "Pictogram " + i)) | t.Contains("Pictogram " + i))
                    {
                        i++;
                    }

                    frmIcon icon_form = new frmIcon();
                    icon_form.MdiParent = this;                             //MDI;
                    icon_form.Text      = "Icoon " + i;
                    icon_form.Show();
                    break;

                case dlgNieuw.enNieuwDocType.Cursor:
                    break;

                case dlgNieuw.enNieuwDocType.Afbeelding:
                    string[] u = MdiChildren.Where(T => T.GetType() == typeof(frmImageEditor)).Select(T => T.Text).ToArray();
                    while (File.Exists(Path.Combine(p, "Afbeelding " + i)) | u.Contains("Afbeelding " + i))
                    {
                        i++;
                    }

                    frmImageEditor img_form = new frmImageEditor();
                    img_form.MdiParent = this;                             //MDI;
                    img_form.Text      = "Afbeelding " + i;
                    img_form.Show();
                    break;

                default:
                    string[] v = MdiChildren.Where(T => T.GetType() == typeof(frmTekenen)).Select(T => T.Text).ToArray();
                    while (File.Exists(Path.Combine(p, "Tekening " + i + ".tek")) | v.Contains("Tekening " + i))
                    {
                        i++;
                    }

                    frmTekenen tek_form = new frmTekenen();
                    tek_form.MdiParent = this;
                    tek_form.Text      = "Tekening " + i;
                    tek_form.Show();
                    tek_form.EndMove += Tek_form_EndMove;
                    tek_form.EndPan  += Tek_form_EndPan;
                    break;
                }
            }
        }
예제 #5
0
        private void Hoofdscherm_FormClosing(object sender, FormClosingEventArgs e)
        {
            IDocument[] docs_changed = MdiChildren.Where(T => Implements(T, typeof(IDocument))).Select(T => (IDocument)T).Where(T => T.Changed).ToArray();
            if (docs_changed.Length != 0)
            {
                if (e.CloseReason == CloseReason.TaskManagerClosing | e.CloseReason == CloseReason.WindowsShutDown)
                {
                    string map = Path.Combine(Program.EnvironmentFolder, "Backup");
                    if (!Directory.Exists(map))
                    {
                        Directory.CreateDirectory(map);
                    }
                    foreach (IDocument doc in docs_changed)
                    {
                        doc.SaveBackup(map);
                    }
                }
                else
                {
                    frmSave frm = new frmSave();
                    frm.SetItems(docs_changed.Select(T => T.PreferredFileName));

                    switch (frm.ShowDialog())
                    {
                    case DialogResult.OK:
                        DialogResult dr;
                        foreach (IDocument doc in docs_changed)
                        {
                            doc.Save(out dr);
                            // indien bestand reeds op schijf     -> dr = DialogResult.None
                            // indien nieuw bestand + OK-klik     -> dr = DialogResult.OK
                            // indien nieuw bestand + Cancel-klik -> dr = DialogResult.Cancel
                            if (dr == DialogResult.Cancel)
                            {
                                e.Cancel = true;
                                return;
                            }
                            else
                            {
                                doc.Close();
                            }
                        }
                        break;

                    case DialogResult.Ignore:
                        break;

                    default:
                        e.Cancel = true;
                        break;
                    }
                }
            }
        }
예제 #6
0
 private void OpenOrActivateTab <TForm>(TForm window) where TForm : Form, new()
 {
     // Check if a window is already open
     foreach (var mdiChild in MdiChildren.Where(mdiChild => mdiChild.GetType() == typeof(TForm)))
     {
         mdiChild.Activate();
         return;
     }
     window.MdiParent = this;
     window.Show();
 }
예제 #7
0
        public void OpenForm(Type typeform)
        {
            foreach (var frm in MdiChildren.Where(frm => frm.GetType() == typeform))
            {
                frm.Activate();
                return;
            }
            var form = (Form)(Activator.CreateInstance(typeform));

            BeginInvoke(new Action(() =>
            {
                form.MdiParent = this;
                form.Show();
            }));
        }
예제 #8
0
        public void EnsureStatisticsWindow(bool instantCalculation = false)
        {
            foreach (var form in MdiChildren.Where(form => form is AccountTradeResultsForm))
            {
                form.Focus();
                return;
            }

            var child = new AccountTradeResultsForm {
                InstantCalculation = instantCalculation
            };

            SetupNonMdiForm(child);
            child.Show();
        }
예제 #9
0
        private void ShowOrActivateForm <T>() where T : Form
        {
            var k = MdiChildren.Where(c => c.GetType() == typeof(T)).FirstOrDefault();

            if (k == null)
            {
                k             = (Form)Activator.CreateInstance(typeof(T));
                k.MdiParent   = this;
                k.WindowState = FormWindowState.Maximized;
                k.Show();
            }
            else
            {
                k.Activate();
            }
        }
예제 #10
0
 /// <summary>
 /// 根据名称查找对应的窗体
 /// </summary>
 /// <param name="text"></param>
 /// <returns></returns>
 private DockContent FindDocument(string text)
 {
     if (dockMain.DocumentStyle == DocumentStyle.DockingWindow)
     {
         foreach (DockContent content in dockMain.Contents)
         {
             if (content.DockHandler.TabText == text)
             {
                 return(content);
             }
         }
         Form m = MdiChildren.Where(p => p.Text.Equals(text)).FirstOrDefault();
         return(m == null ? null : m as DockContent);
     }
     else
     {
         return(null);
     }
 }
예제 #11
0
        private void bbiGetEmails_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            var frm = MdiChildren.Where(_ => _.GetType() == typeof(frmMailList)).FirstOrDefault();

            if (frm != null)
            {
                frm.BringToFront();
            }
            else
            {
                frmMailList list = new frmMailList()
                {
                    MdiParent   = this,
                    WindowState = FormWindowState.Maximized
                };
                list.Connect(bbiServer.EditValue.ToString(), Convert.ToInt32(bbiPort.EditValue), bbiLogin.EditValue.ToString(), bbiPassowrd.EditValue.ToString());
                list.Show();
            }
        }
예제 #12
0
        /*
         *      Обработка MouseUp по кнопку, ассоциируемой с таблицей (TableButton)
         */
        public void TableBtn_X_MouseUp(object sender, MouseEventArgs e)
        {
            var       button    = (Button)sender;
            TableForm tableForm = new TableForm();

            tableForm.Init(
                Model.TableDatas.Where(i => i.Descriptor.Name == button.Text).ElementAt(0),
                TableForm_FormClosed,
                TableForm_ModelChanged);

            switch (e.Button)
            {
            case MouseButtons.Left:
            {
                // если окно таблицы, с которой связяна эта кнопка, НЕ открыто
                if (!MdiChildren.Any(i => i.Text == button.Text))
                {
                    var tableData = TableData.Get(tableForm);
                    Model.AddExistingTable(tableData);
                }
                else
                {
                    Form mdiForm = MdiChildren.Where(i => i.Text == button.Text).ElementAt(0);
                    mdiForm.BringToFront();
                }

                break;
            }

            case MouseButtons.Right:
            {
                CtxMenuTableButtonName = button.Text;

                CtxMS_TableBtnX.Show(Cursor.Position);

                break;
            }
            }
        }
예제 #13
0
        private void QuickSaveProjectToolStripMenuItem_Click(object sender, EventArgs e)
        {
            try
            {
                this.projectBindingSource.EndEdit();

                if (projectFile == null)
                {
                    saveProjectToolStripMenuItem_Click(sender, e);
                    return;
                }
                this.service.Save(projectFile);

                this.projectBindingSource.ResetBindings(false);
                this.service.FirePropertyChanged("CurrentProject");

                if (MdiChildren.Any(x => x.GetType() == typeof(mdiInterview)))
                {
                    foreach (mdiInterview frm in MdiChildren.Where(x => x.GetType() == typeof(mdiInterview)))
                    {
                        if (frm.cboScoring != null)
                        {
                            for (int i = 0; i <= frm.cboScoring.GetUpperBound(0); i++)
                            {
                                for (int j = 0; j <= frm.cboScoring.GetUpperBound(1); j++)
                                {
                                    frm.cboScoring[i, j].BackColor = Color.White;
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Error while saving a project");
            }
        }
예제 #14
0
        private void menuItem11_Click(object sender, EventArgs e)
        {
            var dockPanel = DockPanel;

            if (dockPanel.DocumentStyle == DocumentStyle.SystemMdi)
            {
                var activeMdi = ActiveMdiChild;
                foreach (var form in MdiChildren.Where(form => form != activeMdi))
                {
                    form.Close();
                }
            }
            else
            {
                for (int i = 0; i < dockPanel.DocumentsToArray().Length; i++)
                {
                    var document = dockPanel.DocumentsToArray()[i];
                    if (!document.DockHandler.IsActivated)
                    {
                        document.DockHandler.Close();
                    }
                }
            }
        }
예제 #15
0
        private void StationToolStripMenuItem_Click(object sender, EventArgs e)
        {
            bool mdiisopen        = false;
            ToolStripMenuItem tsm = (ToolStripMenuItem)sender;

            foreach (Form mdiChild in MdiChildren.Where(mdiChild => mdiChild.Text.Contains(tsm.Tag.ToString())))
            {
                mdiisopen = true;
                mdiChild.Activate();
            }
            if (mdiisopen)
            {
                return;
            }
            StatusMonitorControlForm smcProForm = new StatusMonitorControlForm
            {
                MdiParent   = this,
                WindowState = FormWindowState.Normal,
                Para        = _para,
                StationId   = tsm.Tag.ToString()
            };

            smcProForm.Show();
        }
예제 #16
0
        private void LayoutChildren(MdiLayout layout)
        {
            var children = MdiChildren.Where(c => c.Visible).ToList();

            if (children.Count == 0)
            {
                return;
            }

            // размеры окна
            var mdiSize = GetMdiClientWindow().ClientSize;

            if (mdiSize.Height < 40)
            {
                mdiSize = new Size(mdiSize.Width, 40);
            }
            if (mdiSize.Width < 65)
            {
                mdiSize = new Size(65, mdiSize.Height);
            }

            var       capH = SystemInformation.CaptionHeight;
            const int capW = 60;

            // одно окошко развернуть во всю ширину
            if (children.Count == 1)
            {
                children[0].WindowState = FormWindowState.Normal;
                children[0].Location    = new Point(0, 0);
                children[0].Size        = mdiSize;
                return;
            }

            // упорядочить каскадом
            if (layout == MdiLayout.Cascade)
            {
                const int maxInRow = 6;

                var delta   = capH * Math.Min(maxInRow - 1, children.Count - 1);
                var wSize   = new Size(mdiSize.Width - delta, mdiSize.Height - delta);
                var leftTop = new Point(0, 0);
                var counter = 0;
                foreach (var window in children)
                {
                    window.WindowState = FormWindowState.Normal;
                    window.Location    = leftTop;
                    window.Size        = wSize;
                    leftTop            = new Point(leftTop.X + capH, leftTop.Y + capH);
                    counter++;
                    if (counter == maxInRow)
                    {
                        leftTop = new Point(0, 0);
                    }
                }
                return;
            }

            // дать окошкам больше места
            if (mdiSize.Height < 90)
            {
                mdiSize = new Size(mdiSize.Width, 90);
            }
            if (mdiSize.Width < 120)
            {
                mdiSize = new Size(120, mdiSize.Height);
            }

            // выстроить окошки в линию по вертикали или по горизонтали
            if (children.Count < 4)
            {
                var w       = layout == MdiLayout.TileHorizontal ? mdiSize.Width / children.Count : mdiSize.Width;
                var h       = layout == MdiLayout.TileVertical ? mdiSize.Height / children.Count : mdiSize.Height;
                var wSize   = new Size(w, h);
                var stepX   = layout == MdiLayout.TileHorizontal ? w : 0;
                var stepY   = layout == MdiLayout.TileVertical ? h : 0;
                var leftTop = new Point(0, 0);
                foreach (var window in children)
                {
                    window.WindowState = FormWindowState.Normal;
                    window.Location    = leftTop;
                    window.Size        = wSize;
                    leftTop            = new Point(leftTop.X + stepX, leftTop.Y + stepY);
                }
                return;
            }

            // дать окошкам еще больше места и расположить в виде таблицы
            if (mdiSize.Height < 120)
            {
                mdiSize = new Size(mdiSize.Width, 120);
            }
            if (mdiSize.Width < 160)
            {
                mdiSize = new Size(160, mdiSize.Height);
            }

            // посчитать количество строк и столбцов
            var rows = (int)Math.Sqrt(children.Count);
            var cols = children.Count / rows;
            var mod  = children.Count - cols * rows;

            if (mod > 0)
            {
                cols++;
            }

            // разместить
            var ht         = mdiSize.Height / rows;
            var wd         = mdiSize.Width / cols;
            var size       = new Size(wd, ht);
            var top        = 0;
            var childIndex = 0;

            for (var row = 0; row < rows; row++)
            {
                var left = 0;
                for (var col = 0; col < cols; col++)
                {
                    var child = children[childIndex++];
                    child.WindowState = FormWindowState.Normal;
                    child.Location    = new Point(left, top);
                    child.Size        = size;

                    left += wd;
                }
                top += ht;
                var itemsLeft = children.Count - childIndex;
                if (itemsLeft > 0 && itemsLeft < cols)
                {
                    cols = itemsLeft;
                    wd   = mdiSize.Width / cols;
                    size = new Size(wd, ht);
                }
            }
        }