Exemplo n.º 1
0
        /// <summary>
        /// Provede načtení dat do stránky a jejich zobrazení
        /// </summary>
        public void NactiData()
        {
            if (dotazNaPocet == "" || dotazNaPolozky == "") // Pokud nejsou nastaveny dotazy, pak není co načítat
            {
                return;
            }
            int      polozka = 0;  // Kolik položek bylo načteno (abych věděl, kolik jich musím skrýt) a tím pádem zobrazeno na stránce
            string   tooltip = ""; // Co bude zobrazeno v tooltipu pro danou událost
            string   popisek = ""; // Co bude zobrazeno jako popisek u události
            Databaze db      = new Databaze();

            db.Dotaz(dotazNaPolozky + " LIMIT " + (aktualniStranka * tableLayoutPanel.RowCount).ToString() + ", " + tableLayoutPanel.RowCount.ToString() + ";"); // Použijeme předem nastavený dotaz na položky, ale na konec přihodíme limit kvůli omezenému zobrazení stránek
            while (db.DalsiVysledek() == true)
            {
                tableLayoutPanel.GetControlFromPosition(0, polozka).Tag = db.DejVysledekString("ID"); // Uložíme ID události do PictureBoxu s úpravou události
                tableLayoutPanel.GetControlFromPosition(1, polozka).Tag = db.DejVysledekString("ID"); // Uložíme ID události do PictureBoxu splněnosti události
                tableLayoutPanel.GetControlFromPosition(2, polozka).Tag = db.DejVysledekString("ID"); // Uložíme ID události do popisku události
                if (db.DejVysledekInt("Typ") != ((int)Obecne.UdalostiTypy.narozeniny))                // Pokud událost nejsou narozeniny
                {
                    if (db.DejVysledekInt("Splneno") == 1)                                            // Pokud je událost splněná, tak nastavíme zorbazení křížku pro nesplnění, upravíme taky tooltip křížku a popisek události přeškrtneme
                    {
                        ((PictureBox)tableLayoutPanel.GetControlFromPosition(1, polozka)).Image     = Ukolnik.Properties.Resources.krizek;
                        ((PictureBox)tableLayoutPanel.GetControlFromPosition(1, polozka)).Image.Tag = "krizek";
                        toolTip.SetToolTip(tableLayoutPanel.GetControlFromPosition(1, polozka), "Označit jako nesplněno");
                        tableLayoutPanel.GetControlFromPosition(2, polozka).Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Strikeout);
                    }
                    else // V opačném případě se nastaví fajka pro splnění, upraví tooltip fajfky a popiske události nebude přeškrtlý
                    {
                        ((PictureBox)tableLayoutPanel.GetControlFromPosition(1, polozka)).Image     = Ukolnik.Properties.Resources.fajfka;
                        ((PictureBox)tableLayoutPanel.GetControlFromPosition(1, polozka)).Image.Tag = "fajfka";
                        toolTip.SetToolTip(tableLayoutPanel.GetControlFromPosition(1, polozka), "Označit jako splněno");
                        tableLayoutPanel.GetControlFromPosition(2, polozka).Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F);
                    }
                    if (zobrazDatum == true) // Pokud se má zobrazit datum v popisku tak bude zobrazeno, jinak bude jen samotný název události
                    {
                        popisek = db.DejVysledekDatumCas("Kdy").ToString("d.M.yyyy") + " " + db.DejVysledekString("Nadpis");
                    }
                    else
                    {
                        popisek = db.DejVysledekString("Nadpis");
                    }
                    popisek += " | " + db.DejVysledekDatumCas("Kdy").ToString("H:mm"); // Přidáme do popisku čas konání
                    if (db.DejVysledekString("Zprava").Length > 0)                     // Pokud není zpráva prázdná, tak ji přiřadíme do popisku
                    {
                        popisek += " | " + db.DejVysledekString("Zprava");
                    }
                    tableLayoutPanel.GetControlFromPosition(2, polozka).Text = popisek;
                    tooltip = Obecne.DejNazevTypuUdalosti(db.DejVysledekInt("Typ")) + " " + db.DejVysledekDatumCas("Kdy").ToString("H:mm") + "\n" + db.DejVysledekString("Zprava"); // Tooltip bude obsahovat co to je za typ události, kdy nastane daná událost a také její podrobný popis
                    tableLayoutPanel.GetControlFromPosition(1, polozka).Visible = true;                                                                                             // Zobrazí se PictureBox se splněností (mohl být skryt narozeninama z jiného dne)
                }
                else // Pokud jsou to narozeniny
                {
                    if (zobrazDatum == false)                                                                                                                                                                                                                     // Pokud se nemá zobrazit datum v popisku tak nebude zobrazeno, bude jen samotný název události, v opačném případě bude před názvem události i datum, kdy se narozeniny odehrávají (využívá se přechod, který násobí splněnost, která se přičitá k roku -> znamená, že další narozeniny jsou až v příštím roce)
                    {
                        tableLayoutPanel.GetControlFromPosition(2, polozka).Text = "Narozeniny " + db.DejVysledekString("Nadpis") + " (" + (rok - db.DejVysledekInt("Zprava") + (db.DejVysledekInt("Splneno") * prechodNarozeninDoDalsihoRoku)).ToString() + ")"; // Pouze nápis narozeniny, kdo je má a kolik mu bude v závorce
                    }
                    else
                    {
                        tableLayoutPanel.GetControlFromPosition(2, polozka).Text = db.DejVysledekDatumCas("Kdy").ToString("d.M") + "." + (rok + db.DejVysledekInt("Splneno") * prechodNarozeninDoDalsihoRoku).ToString() + " " + db.DejVysledekString("Nadpis") + " (" + (rok - db.DejVysledekInt("Zprava") + (db.DejVysledekInt("Splneno") * prechodNarozeninDoDalsihoRoku)).ToString() + ")"; // Kdy má narozeniny, kdo má narozeniny a v závorce kolik mu bude (využívá se přechod, který násobí splněnost, která se přičitá k roku -> znamená, že další narozeniny jsou až v příštím roce)
                    }
                    tooltip = "Narodil se v roce " + db.DejVysledekString("Zprava");                                                                                                                                                                                                                                                                                                            // Jednoduchý tooltip, který zobrazuje, dky se dotyčný narodil
                    tableLayoutPanel.GetControlFromPosition(2, polozka).Font    = new System.Drawing.Font("Microsoft Sans Serif", 8.25F);                                                                                                                                                                                                                                                       // Text je obyčejný, nepřeškrtnutý
                    tableLayoutPanel.GetControlFromPosition(1, polozka).Visible = false;                                                                                                                                                                                                                                                                                                        // PictureBox se splněností se schová (narozeniny nelze splnit, budou tu furt a furt)
                }
                toolTip.SetToolTip(tableLayoutPanel.GetControlFromPosition(2, polozka), tooltip);                                                                                                                                                                                                                                                                                               // Nastavíme událostem tooltipy
                tableLayoutPanel.GetControlFromPosition(0, polozka).Visible = true;                                                                                                                                                                                                                                                                                                             // Necháme zjevit PictureBox s úpravou události (mohl být schován z předchozího nedostatku událostí)
                tableLayoutPanel.GetControlFromPosition(2, polozka).Visible = true;                                                                                                                                                                                                                                                                                                             // Necháme zjevit popisek události (mohl být schován z předchozího nedostatku událostí)
                polozka += 1;                                                                                                                                                                                                                                                                                                                                                                   // Zvýšíme počet položek, které budou na stránce
            }
            if (polozka == 0)                                                                                                                                                                                                                                                                                                                                                                   // Pokud bylo načtneo nula položek, tak se pokusí změnšit stránka
            {
                if (ZmenStranku(aktualniStranka - 1) == true)                                                                                                                                                                                                                                                                                                                                   // Jestliže byla změna stránky úspěšná, tak se dále nepokračuje, protože se mohou znova načítat data a taky se znovu načítat budou, protože díky té změně stránky bylo vyvoláno další načítání
                {
                    return;
                }
                else // Jestliže změna stránky nebyla úspěšná, tak to znamená, že už více snížit nemůžeme a je tam tedy definitivně 0 položek, takže se provede akce, která se má provést při nula položkách a vrátí počet položek, které díky té akci vznikly
                {
                    polozka += NulaPolozek();
                }
                if (polozka == 0) // Pokud je i nadále nula položek, tak se ukončí načítání, protože se bude zavírat okno
                {
                    return;
                }
            }
            int velikost = (int)tableLayoutPanel.Height / polozka;                      // Spočítá kolik místa si mohou rozdělit popisky

            velikost = velikost - (velikost % ((int)labelDozadu.Font.GetHeight() + 1)); // Zaokrouhlí je na celé řádky
            for (int i = 0; i < polozka; i++)                                           // Postupně zvětší místo pro popisky - není efektivní využití přidělení místa, za to ale mnohem rychlejší
            {
                ((Label)tableLayoutPanel.GetControlFromPosition(2, i)).MaximumSize = new System.Drawing.Size(0, velikost);
            }
            for (int i = polozka; i < tableLayoutPanel.RowCount; i++) // Řádky, kterým nebyla přiřazena událost budou zneviditelněny
            {
                tableLayoutPanel.GetControlFromPosition(0, i).Visible = false;
                tableLayoutPanel.GetControlFromPosition(1, i).Visible = false;
                tableLayoutPanel.GetControlFromPosition(2, i).Visible = false;
            }
            db.Dotaz(dotazNaPocet); // Zjistíme kolik máme událostí do stránek
            while (db.DalsiVysledek())
            {
                if (db.DejVysledekInt("Pocet") > tableLayoutPanel.RowCount) // Pokud je událostí více než se vejde na jendu stránku, tak musíme zobrazit navigační prvky
                {
                    textBoxStranka.Visible = true;                          // Zobrazí se textBox obsahující aktuální stránku
                    if (aktualniStranka == 0)                               // Pokud jsme na první stránce, tak schováme ovládání na skok na začátek nebo dozadu
                    {
                        labelDozadu.Visible  = false;
                        labelZacatek.Visible = false;
                    }
                    else // Pokud nejsem na začátku, tak zviditelníme ovládáníé na skok na začátek nebo dozadu, též nastavíme kam dozadu vede
                    {
                        labelDozadu.Visible  = true;
                        labelZacatek.Visible = true;
                        labelDozadu.Tag      = aktualniStranka - 1;                             // Vede na předchozí stránku
                    }
                    int stranek = (db.DejVysledekInt("Pocet") - 1) / tableLayoutPanel.RowCount; // Spočítáme počet stránek
                    if (stranek == 0 || aktualniStranka == stranek)                             // Pokud je stránek nula nebo už jsme na té poslední, tak schováme ovládání na skok vpřed a na konec
                    {
                        labelVpred.Visible = false;
                        labelKonec.Visible = false;
                    }
                    else // V opačném případě zviditelníme ovládání na skok vpřed a na konec, nastavíme kam vede vpřed a kde je konec
                    {
                        labelVpred.Visible = true;
                        labelVpred.Tag     = aktualniStranka + 1; // Vede na následující stránku
                        labelKonec.Visible = true;
                        labelKonec.Tag     = stranek;             // Vede na psolední stránku
                    }
                }
                else // Pokud je počet událostí menší než kolik se vejde na jednu stránku, tak navigaci skryjeme
                {
                    labelZacatek.Visible   = false;
                    labelDozadu.Visible    = false;
                    labelVpred.Visible     = false;
                    labelKonec.Visible     = false;
                    textBoxStranka.Visible = false;
                }
            }
            db.Close();
        }
Exemplo n.º 2
0
        /// <summary>
        /// Načte data a zobrazí je
        /// </summary>
        private void NactiData()
        {
            Databaze db = new Databaze();

            db.Dotaz("SELECT * FROM udalosti WHERE ID=" + Udalost + ";"); // Získáme data k události
            while (db.DalsiVysledek())
            {
                if (db.DejVysledekInt("Upozorneno") == (int)Obecne.UpozorneniTypy.neupozornit) // Zjistíme, zda se na událost upozorňuje nebo ne a výsledek zobrazíme
                {
                    labelUpozorneni.Text = "Ne";
                }
                else
                {
                    labelUpozorneni.Text = db.DejVysledekDatumCas("Upozorneni").ToString("d.M.yyyy H:mm");
                }
                labelNazev.Text = db.DejVysledekString("Nadpis");                               // Získáme název události
                labelTyp.Text   = Obecne.DejNazevTypuUdalosti(db.DejVysledekInt("Typ"));        // Získáme název typu události
                if (db.DejVysledekInt("Typ") != (int)Obecne.UdalostiTypy.narozeniny)            // Zda to nejsou narozeniny
                {
                    labelKdy.Text    = db.DejVysledekDatumCas("Kdy").ToString("d.M.yyyy H:mm"); // Získáme kdy se koná událost
                    richTextBox.Text = db.DejVysledekString("Zprava");                          // Získáme popis k události
                    if (db.DejVysledekInt("Splneno") == 1)                                      // Získáme, zda je událost splněná
                    {
                        labelSplneno.Text = "Ano";
                    }
                    else
                    {
                        labelSplneno.Text = "Ne";
                    }
                }
                else // Pokud to jsou narozeniny
                {
                    labelPopisInfo.Visible = false; // Popisek nepotřebujeme
                    richTextBox.Visible    = false;
                    DateTime datum = db.DejVysledekDatumCas("Kdy");                                                               // Nastavíme kdy (den, měsíc a rok) se koná událost
                    if (datum.Month > DateTime.Now.Month || (datum.Month == DateTime.Now.Month && datum.Day >= DateTime.Now.Day)) // Pokud nás ty narozeniny čekají ještě letos, tak rok nastavíme na letošek
                    {
                        datum = datum.AddYears(DateTime.Now.Year - datum.Year);
                    }
                    else // Pokud nás narozeniny čekají příští rok, tak se nastaví příští rok
                    {
                        datum = datum.AddYears(1 + DateTime.Now.Year - datum.Year);
                    }
                    labelKdy.Text         = datum.ToString("d.M.yyyy") + " (" + (datum.Year - db.DejVysledekInt("Zprava")).ToString() + ". narozeniny)"; // Vypíšeme datum nejbližších budoucích narozenin a nový věk
                    labelNazevInfo.Text   = "Jméno:";                                                                                                    // Nadpis události bude jménem
                    labelSplnenoInfo.Text = "Datum narození:";                                                                                           // Splněnost událostí bude datem narození
                    labelSplneno.Text     = db.DejVysledekDatumCas("Kdy").ToString("d.M.") + db.DejVysledekString("Zprava");                             // Získáme datum narození
                }
            }
            if (richTextBox.Text == "") // Pokud nebylo nic napsáno do zprávy, tak bude písmo kurzívou a bude tam info o tom, že tam nic napsáno nebylo
            {
                richTextBox.Text = "Komentář k události nebyl připsán";
                richTextBox.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
            }
            db.Close();
            int vyska = (richTextBox.GetLineFromCharIndex(richTextBox.Text.Length) + 1) * richTextBox.Font.Height + 1 + richTextBox.Margin.Vertical; // Spočítá se výška, kterou zabírá text

            if (vyska < richTextBox.MaximumSize.Height)                                                                                              // Pokud je ta výška menší než maximální velikost okna, tak se richTextBox zmenší
            {
                richTextBox.Size = new Size(this.Width, vyska);
            }
        }