コード例 #1
0
        // Загрузка 1 игры в список
        void Load1Game(ListViewItem lvi, System.Data.SqlServerCe.SqlCeDataReader sqlReader)
        {
            bool update = (lvi != null); //обновить существующий lvi или добавить новый?

            // Комментарий
            String str = "";

            if (!sqlReader.IsDBNull(sqlReader.GetOrdinal("Comment")))
            {
                str = sqlReader.GetString(sqlReader.GetOrdinal("Comment")).Trim();
            }
            if (update)
            {
                lvi.Text = str;
            }
            else
            {
                lvi = m_listview_Games.Items.Add(new ListViewItem(str));
            }

            // Дата
            str = "";
            if (!sqlReader.IsDBNull(sqlReader.GetOrdinal("StartDate")))
            {
                DateTime dt = sqlReader.GetDateTime(sqlReader.GetOrdinal("StartDate"));
                str = dt.ToString("dd.MM.yyyy HH") + "ч";
            }
            if (update)
            {
                lvi.SubItems[1].Text = str;
            }
            else
            {
                lvi.SubItems.Add(str);
            }

            // id (тэг)
            if (!update)
            {
                lvi.Tag = sqlReader.GetInt32(sqlReader.GetOrdinal("id"));
            }

            // Тип
            GameType t = (GameType)sqlReader.GetByte(sqlReader.GetOrdinal("Type"));

            if (!update)
            {
                switch (t)
                {
                case GameType.Robber:
                    lvi.SubItems.Add("Робб");
                    break;

                case GameType.Sport:
                    lvi.SubItems.Add("Спорт");
                    break;

                case GameType.Compensat:
                    lvi.SubItems.Add("Комп");
                    break;

                case GameType.SimpleIMP:
                    lvi.SubItems.Add("IMP");
                    break;
                }
            }

            // Строка опций:
            if (!update)
            {
                ArrayOfString arrOptions = new ArrayOfString();
                if (!sqlReader.IsDBNull(sqlReader.GetOrdinal("DealsInMatch")))
                {
                    arrOptions.Add(sqlReader.GetByte(sqlReader.GetOrdinal("DealsInMatch")).ToString() + "x");
                }
                if (!sqlReader.IsDBNull(sqlReader.GetOrdinal("GameOptions")))
                {
                    byte GOptions = sqlReader.GetByte(sqlReader.GetOrdinal("GameOptions"));
                    if (t == GameType.Robber)
                    {
                        bool BonusForOners       = ((GOptions & 1) > 0);
                        bool BonusForWholeRobber = ((GOptions & 2) > 0);
                        arrOptions.Add(BonusForWholeRobber ? "за робб" : "за гейм");
                        if (BonusForOners)
                        {
                            arrOptions.Add("за онеры");
                        }
                    }
                    if (t == GameType.Compensat)
                    {
                        BridgeGameScoring.TypeOfCompensation CompType = (BridgeGameScoring.TypeOfCompensation)(GOptions & 3); //2 bits
                        bool TenCardsIsTwoFits    = ((GOptions & 4) > 0);                                                     //3rd bit
                        bool LessCompFor2Fits23PC = ((GOptions & 8) > 0);                                                     //4th bit
                        switch (CompType)
                        {
                        case BridgeGameScoring.TypeOfCompensation.Chicago:
                            arrOptions.Add("чикаг");
                            break;

                        case BridgeGameScoring.TypeOfCompensation.Europe:
                            arrOptions.Add("европ");
                            if (TenCardsIsTwoFits)
                            {
                                arrOptions.Add("10 за 2");
                            }
                            if (LessCompFor2Fits23PC)
                            {
                                arrOptions.Add("< 23-2");
                            }
                            break;

                        case BridgeGameScoring.TypeOfCompensation.Milton_York:
                            arrOptions.Add("М-У");
                            break;

                        case BridgeGameScoring.TypeOfCompensation.Moscow:
                            arrOptions.Add("моск");
                            break;
                        }
                    }
                }

                str = "";
                if (arrOptions.Count != 0)
                {
                    for (int j = 0; j < arrOptions.Count; j++)
                    {
                        if (j > 0)
                        {
                            str += ", ";
                        }
                        str += arrOptions[j];
                    }
                }
                lvi.SubItems.Add(str);
            }

            // Место
            str = "";
            if (!sqlReader.IsDBNull(sqlReader.GetOrdinal("Place")))
            {
                str = sqlReader.GetString(sqlReader.GetOrdinal("Place")).Trim();
            }
            if (update)
            {
                lvi.SubItems[4].Text = str;
            }
            else
            {
                lvi.SubItems.Add(str);
            }

            // Игроки
            str  = "";
            str += "N: ";
            if (!sqlReader.IsDBNull(sqlReader.GetOrdinal("N")))
            {
                str += sqlReader.GetString(sqlReader.GetOrdinal("N")).Trim();
            }
            str += ", S: ";
            if (!sqlReader.IsDBNull(sqlReader.GetOrdinal("S")))
            {
                str += sqlReader.GetString(sqlReader.GetOrdinal("S")).Trim();
            }
            str += ", E: ";
            if (!sqlReader.IsDBNull(sqlReader.GetOrdinal("E")))
            {
                str += sqlReader.GetString(sqlReader.GetOrdinal("E")).Trim();
            }
            str += ", W: ";
            if (!sqlReader.IsDBNull(sqlReader.GetOrdinal("W")))
            {
                str += sqlReader.GetString(sqlReader.GetOrdinal("W")).Trim();
            }
            if (update)
            {
                lvi.SubItems[5].Text = str;
            }
            else
            {
                lvi.SubItems.Add(str);
            }
        }