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; }
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; } }
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); } }
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); }
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); }