예제 #1
0
            public Diaps_class(uint MarkID, uint NormID, DataGridView Grid)
            {
                this.MarkID = MarkID;
                this.NormID = NormID;

                NM = RCache.Marks[MarkID].GetNorm(NormID);

                for (int i = 0; i < NM.Ranges.Count; i++)
                {
                    Diap.Add(new Diap_class(this, NM.Ranges[i].ID));
                }

                this.Grid = Grid;

                Grid.Columns.Add("Number", "Номер");
                Grid.Columns.Add("Diapazon", "Диапазон");
                Grid.Columns.Add("Percent", "Тип");
                Grid.Columns.Add("Volume", "Значение");
                Grid.Columns[0].Width = 35;
                Grid.Columns[1].Width = 120;
                Grid.Columns[2].Width = 100;
                Grid.Columns[3].Width = 40;

                Grid.CellValueNeeded += Grid_CellValueNeeded;
                if (data.User <uint>(C.User.UType) != (uint)data.UType.Employe)
                {
                    Grid.CellDoubleClick += Grid_CellDoubleClick;
                }

                Grid.VirtualMode = true;
                Grid.ReadOnly    = true;

                Grid.RowCount = Diap.Count;
            }
예제 #2
0
        private void createBandControls(Diap band)
        {
            string name;

            if (band.group != null)
            {
                name = band.group;
                if (bandsMenuItems.ContainsKey(name))
                {
                    bandsMenuItems[band.name]          = bandsMenuItems[name];
                    dxDataBandFilterButtons[band.name] = dxDataBandFilterButtons[name];
                    return;
                }
            }
            else
            {
                name = band.name;
            }

            ToolStripMenuItem mi = new ToolStripMenuItem();

            mi.Text = name;
            if (settings.dxccBand != null && settings.dxccBand.Exists(x => x.name == name))
            {
                mi.Checked = settings.dxccBand.FirstOrDefault(x => x.name == name).status;
            }
            else
            {
                mi.Checked = true;
            }
            mi.CheckOnClick    = true;
            mi.CheckedChanged += miFilterCheckedChanged;
            miBands.DropDownItems.Add(mi);
            bandsMenuItems[name] = mi;

            ToolStripButton tsb = new ToolStripButton();

            if (settings.dgvDxFilterBands != null && settings.dgvDxFilterBands.Exists(x => x.name == name))
            {
                tsb.Checked = settings.dgvDxFilterBands.FirstOrDefault(x => x.name == name).status;
            }
            else
            {
                tsb.Checked = true;
            }
            tsb.CheckOnClick    = true;
            tsb.Visible         = bandsMenuItems[name].Checked;
            tsb.Text            = name;
            tsb.DisplayStyle    = ToolStripItemDisplayStyle.Text;
            tsb.CheckedChanged += dgvDxDataFiltersChanged;
            dxDataBandFilterButtons[band.name] = tsb;
            tsFilter.Items.Add(tsb);

            if (band.group != null)
            {
                bandsMenuItems[band.group]          = mi;
                dxDataBandFilterButtons[band.group] = tsb;
            }
        }
예제 #3
0
        public static Diap DiapMerge(Diap diap1, Diap diap2, out bool flag) // Слияние двух элементов Diap. Если слияние возможно - возвращает новый элемент и true. Если нет - возвращает элемент (0, 0) и false
        {
            Diap diapOut = new Diap();

            if (diap1.Last >= diap2.First)
            {
                List <Double> compareLast = new List <double>()
                {
                    diap1.Last, diap2.Last
                };
                double biggestLast = compareLast.Max();
                diapOut = new Diap(diap1.First, biggestLast);
                flag    = true;
                return(diapOut);
            }
            else
            {
                diapOut = new Diap(0.0, 0.0);
                flag    = false;
                return(diapOut);
            }
        }
예제 #4
0
        public static List <Diap> Zadacha(List <Diap> diaps)
        {
            List <Diap> listOut  = new List <Diap>();
            Diap        elem     = diaps[0];
            Diap        elemBuff = new Diap();
            bool        flag;

            for (int i = 1; i < diaps.Count; i++)
            {
                elemBuff = DiapMerge(elem, diaps[i], out flag);
                if (flag == false) // Уперлись
                {
                    listOut.Add(elem);
                    elem = diaps[i];
                }
                else // Едем дальше
                {
                    elem = elemBuff;
                }
            }
            listOut.Add(elem);
            return(listOut);
        }
예제 #5
0
        public static List <Diap> ConvertArray(string[] strMasInput) // Преобразование входного массива строк в список  Diap
        {
            List <Diap> diapListOut = new List <Diap>();
            double      first;
            double      last;
            string      element;

            // Создаем список объектов Diap из входного массива строк
            for (int i = 0; i < strMasInput.Length; i++)
            {
                element = strMasInput[i];
                List <string> stringList = new List <string>();
                string        stringBuff = "";
                foreach (var j in element)
                {
                    if (j != '-')
                    {
                        stringBuff += j;
                    }
                    else
                    {
                        stringList.Add(stringBuff);
                        stringBuff = "";
                    }
                }
                stringList.Add(stringBuff);
                first = int.Parse(stringList[0].ToString());
                last  = int.Parse(stringList[1].ToString());
                Diap diap = new Diap(first, last);
                diapListOut.Add(diap);
            }
            // Сортировка Diap списка
            Diap temp = new Diap();

            for (int i = 0; i < diapListOut.Count - 1; i++)
            {
                for (int j = i + 1; j < diapListOut.Count; j++)
                {
                    if (diapListOut[i].First > diapListOut[j].First)
                    {
                        temp           = diapListOut[i];
                        diapListOut[i] = diapListOut[j];
                        diapListOut[j] = temp;
                    }
                }
            }
            // Сортировка Diap списка
            for (int x = 0; x < diapListOut.Count - 1; x++)
            {
                for (int z = x + 1; z < diapListOut.Count; z++)
                {
                    if (diapListOut[x].First == diapListOut[z].First & diapListOut[x].Last > diapListOut[z].Last)
                    {
                        temp           = diapListOut[x];
                        diapListOut[x] = diapListOut[z];
                        diapListOut[z] = temp;
                    }
                }
            }
            return(diapListOut);
        }