public void setHeader(cKomorka komorka, Style styl)
 {
     header = komorka;
     komorka.kolumna = this;
     header.lbl.Content = cpdb.IdPDB.ToString();
     header.lbl.Style = styl;
 }
Beispiel #2
0
        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;
            }
        }