// Загрузка 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); } }