public void setHeader(cKomorka komorka, Style styl) { header = komorka; komorka.kolumna = this; header.lbl.Content = cpdb.IdPDB.ToString(); header.lbl.Style = styl; }
public cGrupa(cKomorka ng, cWiersz wiersz, cKolumnaDanych kol) { VarGroup = wiersz.VarGroup; kolumna = kol; headerCell = ng; headerCell.lbl.Content = "" ; m_selected = false; komorkiDanych = new List<cKomorka>(); }
public MORSObjectsMerge() { InitializeComponent( ); //------------------------------------------------------------------------------------------------------------------- //generuje liste cPDBVar listacPDBVar = new List<cPDBVar>(); listacPDBVar.Add(new cPDBVar(1, "Catering, diety, bilety, transport własny", "Catering_diety_bilety_transport_własny", "inne")); listacPDBVar.Add(new cPDBVar(4, "CAPI koszt wywiadowcy", "CAPI_IntervrCost", "CAPI")); listacPDBVar.Add(new cPDBVar(982, "CAWI inny koszt", "CAWI_anotherCost", "CAWI")); listacPDBVar.Add(new cPDBVar(23, "RT koszt analizy", "RT_AnalysisCost", "RT")); listacPDBVar.Add(new cPDBVar(2, "CAWI koszt operacji", "cawi_opserviceCost", "CAWI")); listacPDBVar.Add(new cPDBVar(3, "CAPI inny koszt", "CAPI_AnotherCost", "CAPI")); listacPDBVar.Add(new cPDBVar(5, "CAPI koszt koordynatora", "CAPI_CoordCost", "CAPI")); listacPDBVar = listacPDBVar.OrderBy(p => p.VarGroup).ToList(); //zeby byly po kolei //generuje liste cPDB Random random = new Random(); listacPDB = new List<cPDB>(); listacPDB.Add(new cPDB(999, 11m, 11m, 11m, 11m, 11m, 11m)); listacPDB.Add(new cPDB(982, random.Next(0, 100), random.Next(0, 100), random.Next(0, 100), random.Next(0, 100), random.Next(0, 100), random.Next(0, 100))); listacPDB.Add(new cPDB(888, 22, 22, 22, 22, 22, 22)); listacPDB.Add(new cPDB(477, 33, 33, 33, 33, 33, 33)); listacPDB.Add(new cPDB(666, 44, 44, 44, 44, 44, 44)); listacPDB.Add(new cPDB(159, 55, 55, 55, 55, 55, 55)); //------------------------------------------------------------------------------------------------------------------- //ustawia kulture -przecinki, waluta itp CultureInfo culture; culture = CultureInfo.CreateSpecificCulture("pl"); Thread.CurrentThread.CurrentCulture = culture; Thread.CurrentThread.CurrentUICulture = culture; this.Language = XmlLanguage.GetLanguage(Thread.CurrentThread.CurrentCulture.Name); //style z xamla sciaga stylBezGorLew = this.FindResource("bezGorLew") as Style; stylCala = this.FindResource("cala") as Style; stylNazwaPrel = this.FindResource("nazwaPrel") as Style; stylNazwaPrelZaznaczona = this.FindResource("nazwaPrelZaznaczona") as Style; stylZaznaczona = this.FindResource("zaznaczona") as Style; stylNazwaGrupyZaznaczona = this.FindResource("nazwaGrupyZaznaczona") as Style; stylNazwaGrupy = this.FindResource("nazwaGrupy") as Style; stylNazwaPozZaznaczona = this.FindResource("nazwaPozZaznaczona") as Style; stylNazwaPoz = this.FindResource("nazwaPoz") as Style; //sortuje liste wierszy danych listacPDBVar = listacPDBVar.OrderBy(p => p.VarGroup).ToList(); //zeby byly po kolei //tworze liste grup listaGrup = new HashSet<string>(); foreach (cPDBVar wiersz in listacPDBVar) { listaGrup.Add(wiersz.VarGroup); } //tworze liste wierszy listaWierszy = new List<cWiersz>(); foreach (string grupa in listaGrup) { //tworze wiersz, ktory bedzie zawierał sumy grup listaWierszy.Add(new cWiersz(grupa)); foreach (cPDBVar wierszdanych in listacPDBVar) { if (wierszdanych.VarGroup == grupa) { //wiersz bedacy w grupie listaWierszy.Add(new cWiersz(wierszdanych)); } } } //tworze liste kolumn listaKolumnDanych = new List<cKolumnaDanych>(); foreach (cPDB kol in listacPDB) { listaKolumnDanych.Add(new cKolumnaDanych(kol)); } //tworze tablice labelek - wypełniam grida //pierwsza kolumna: ColumnDefinition col = new ColumnDefinition(); col.MinWidth = 300; mGrid.ColumnDefinitions.Add(col); //reszta kolumn for (int i = 0; i < listaKolumnDanych.Count() + 1; ++i ) { col = new ColumnDefinition(); col.MinWidth = 50; mGrid.ColumnDefinitions.Add(col); } //dodaje wiersze RowDefinition row; for(int i = 0; i < listaWierszy.Count() + 2; ++i) { row = new RowDefinition(); mGrid.RowDefinitions.Add(row); } //wypelniam tabele komorek, generujace od razu labelki tabelaKomorek = new cKomorka[mGrid.ColumnDefinitions.Count() , mGrid.RowDefinitions.Count()]; for(int i = 0; i < mGrid.ColumnDefinitions.Count() ; ++i) { for (int j = 0; j < mGrid.RowDefinitions.Count() - 1; ++j) { tabelaKomorek[i, j] = new cKomorka(i, j , mGrid, stylZaznaczona, stylBezGorLew); } } //dodaje komorke sumy calkowitej, w ostatniej kolumnie i ostatnim rzędzie sumaCalkowitaCell = new cKomorka(mGrid.ColumnDefinitions.Count(), mGrid.RowDefinitions.Count(), mGrid, stylCala, stylCala); sumaCalkowitaCell.lbl.HorizontalContentAlignment= System.Windows.HorizontalAlignment.Right ; sumaCalkowitaCell.Val = 0; //przypisuje naglowki do wierszy for (int i = 0; i < listaWierszy.Count(); ++i) { if (listaWierszy[i].jestSuma) { listaWierszy[i].setHeader(tabelaKomorek[0, i + 1], stylNazwaGrupy, stylNazwaGrupyZaznaczona); } else { listaWierszy[i].setHeader(tabelaKomorek[0, i + 1], stylNazwaPoz, stylNazwaPozZaznaczona ); } } //przypisuje komorki danych do wierszy try { for (int i = 0; i < listaWierszy.Count() ; ++i) { for(int j = 0; j < listaKolumnDanych.Count() ; ++j) { listaWierszy[i].komorkiDanych.Add(tabelaKomorek[j+1, i+1]); if (listaWierszy[i].jestSuma) { tabelaKomorek[j + 1, i + 1].lbl.MouseDown += new MouseButtonEventHandler(OnGroupClick); } else { tabelaKomorek[j + 1, i + 1].lbl.MouseDown += new MouseButtonEventHandler(OnCellClick); } } } } catch(Exception e) { MessageBox.Show(e.Message + "!!! nie udalo sie przypisac komorek danych do wierszy"); } //przypisuje komorki sumy do wierszy try { for (int i = 0; i < listaWierszy.Count(); ++i) { listaWierszy[i].sumCell = (tabelaKomorek[listaKolumnDanych.Count() + 1, i + 1]); } } catch (Exception e) { MessageBox.Show(e.Message + "!!! nie udalo sie przypisac komorek sum do wierszy"); } //lewy gorny rog tabelaKomorek[0, 0].lbl.Content = "Nazwa pozycji"; tabelaKomorek[0, 0].lbl.Style = stylCala; int z = 0; //przypisuje naglowki kolumn for (int i = 0; i < listaKolumnDanych.Count(); ++i) { listaKolumnDanych[i].setHeader(tabelaKomorek[i+1, 0], stylNazwaPrel); tabelaKomorek[i + 1, 0].lbl.MouseDown += new MouseButtonEventHandler(OnColumnClick); } //naglowek kolumny sum tabelaKomorek[listaKolumnDanych.Count() + 1, 0].lbl.Content = "Suma"; tabelaKomorek[listaKolumnDanych.Count() + 1, 0].lbl.Style = stylNazwaPrel ; //przypisuje komorki do kolumn i ich wartosci for (int i = 0; i < listaWierszy.Count(); ++i) { for (int j = 0; j < listaKolumnDanych.Count(); ++j) { if (listaWierszy[i].jestSuma) {//tworzy nowa grupe listaKolumnDanych[j].grupy.Add(new cGrupa(tabelaKomorek[j + 1, i + 1], listaWierszy[i], listaKolumnDanych[j])); tabelaKomorek[j + 1, i + 1].grupa = listaKolumnDanych[j].grupy.Last(); } else {//dodaje komorke do grupy listaKolumnDanych[j].grupy.Last().komorkiDanych.Add(tabelaKomorek[j + 1, i + 1]); tabelaKomorek[j + 1, i + 1].grupa = listaKolumnDanych[j].grupy.Last(); //przypisanie wartości //znajduje property po nazwie PropertyInfo pI = listaKolumnDanych[j].cpdb.GetType().GetProperty(listaWierszy[i].wierszDanych.PDBPosition) ; tabelaKomorek[j + 1, i + 1].Val = (decimal)pI.GetValue(listaKolumnDanych[j].cpdb) ; } } } calculateGroupSums(); calculateRowSums(); calculateAllSum(); }
public void setHeader(cKomorka komorka, Style stylodzn, Style stylzazn) { headerCell = komorka; komorka.wiersz = this; headerCell.stylOdzn = stylodzn; headerCell.stylZazn = stylzazn; headerCell.lbl.Style = stylodzn; if(jestSuma) { headerCell.lbl.Content = VarGroup; } else { headerCell.lbl.Content = wierszDanych.Name; } }