/// <summary> /// Обработка выбора записи из истории. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void cbHistory_SelectedIndexChanged(object sender, EventArgs e) { if (_pgPpFlag == false) { switch (cbHistory.SelectedIndex) { case 0: // Очистка истории: if (MessageBox.Show("Вы действительно хотите удалить все записи?", cPp.name, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes) { cPp.db.soldiers.removeAllButOneRecords(); cPp.db.changed = true; } break; case 1: // Создание новой записи: if (noHistoryRecord(DateTime.Now.ToShortDateString())) { cPp.db.soldiers.addRecord(ObjectCloner.DeepClone(cPp.db.soldiers.record)); cPp.db.changed = true; } else { MessageBox.Show(String.Format("Запись с именем {0} уже существует.", DateTime.Now.ToShortDateString()), cPp.name, MessageBoxButtons.OK, MessageBoxIcon.Warning); } break; default: // Выбор: cPp.db.soldiers.recordIndex = cbHistory.SelectedIndex - 2; // Первые два элемента зарезервированы. break; } tsbSoldiers_Click(null, null); } }
/// <summary> /// Инициализация открытых ранее данных. /// </summary> private void afterOpen() { // Ведение истории: int lastRecordIndex = cPp.db.soldiers.records.Count - 1; if (cPp.db.soldiers.records[lastRecordIndex].date.Date < DateTime.Now.Date) // Сегодня новое число. Создаем копию личного состава для ведения истории: { cPp.db.soldiers.addRecord(ObjectCloner.DeepClone(cPp.db.soldiers.records[lastRecordIndex])); lastRecordIndex++; // Записей стало на одну больше. cPp.db.changed = true; // База данных была изменена. } // Изменение интерфейса: cPp.db.soldiers.recordIndex = lastRecordIndex; synchronizeDb(true); tsbSoldiers_Click(null, null); cPp.flushMemory(); // Принудительное освобождение памяти. }