- •Министерство образования и науки рф
- •1Общие требования
- •2Последовательность выполнения работы
- •3Порядок контроля и приёмки
- •4Пример выполнения работы
- •Создание mdi оболочки приложения. Определение структур данных в соответствии с заданием
- •4.1.1Создание mdi оболочки приложения
- •4.1.2Определение структур данных
- •4.2Добавление строк в таблицы, а также добавление фотографий
- •4.2.1Создание диалога для добавления строк в таблицы
- •4.2.2Объявление переменных, для хранения таблиц. Их инициализация и удаление
- •4.2.3Добавление строки в таблицу
- •4.2.4Загрузка изображения
- •4.2.5Отображение графического окна
- •Отображение строк таблиц
- •4.2.6Создание графического окна для отображения строк таблиц
- •4.2.7Вывод строк таблицы на экран
- •4.2.8Отображение графического окна
- •4.3Сохранение структур данных таблиц в файлы
- •4.4Чтение данных таблиц из файлов и заполнение соответствующих структур в памяти
- •4.5Реализация операций манипулирования над данными для каждой таблицы: изменение, удаление и сохранение значений в таблицах
- •4.5.1Реализация функции изменения строк таблицы на базе имеющегося диалога для добавления строк
- •4.5.2Вызов диалога добавления / изменения строк
- •4.5.3Удаление строк таблицы
- •4.6Создание фильтра строк по заданным условиям для каждой таблицы
- •4.7Реализация запросов на выбор данных из одной или нескольких таблиц
- •5Практические задания для самостоятельной работы
- •5.1Вариант 1
- •5.2Вариант 2
- •5.3Вариант 3
- •5.4Вариант 4
- •5.5Вариант 5
- •5.6Вариант 6
- •5.7Вариант 7
- •5.8Вариант 8
- •5.9Вариант 9
- •5.10Вариант 10
- •5.11Вариант 11
- •5.12Вариант 12
- •5.13Вариант 13
- •5.14Вариант 14
- •5.15Вариант 15
- •5.16Вариант 16
- •5.17Вариант 17
- •5.18Вариант 18
- •5.19Вариант 19
- •Список рекомендуемой литературы
Отображение строк таблиц
4.2.6Создание графического окна для отображения строк таблиц
Для отображения строк таблицы необходимо создать новую форму, определить для неё имя и сохранить, как описано в разделе 4.2. Установите свойство графического окна FormStyle = MDIChild, это позволит отображать окно как дочерний элемент главного модуля MDI. Разместите необходимые графические элементы в окне. Для отображения списка строк таблицы используйте элемент группы Win32 – List View. Для объекта ListView рекомендуется установить следующие значения свойств RowSelect = true, ReadOnly = true. Примерный вид окна представлен на рисунке 4.4.
Рисунок 4.4 – Проект окна отображения содержимого таблицы
Кнопки «Добавить», «Изменить», «Удалить» в последствии позволят осуществлять централизованное управление данными таблицы. Подробнее об этом будет рассказано в разделе 4.5.
4.2.7Вывод строк таблицы на экран
Вывод строк таблицы на экран логично осуществлять во время создания графического окна, то есть в конструкторе объекта.
Вывод строк таблицы на экран
// файл fmStudentTableUnit.cpp, класс TfmStudentTable
__fastcall TfmStudentTable::TfmStudentTable(TComponent* Owner)
: TForm(Owner)
{
// Очистка списка строк таблицы на экране
lvList->Clear();
// Объявление указателя на строку в соответствии с типом текущей таблицы
TStudent *student;
// Объявление указателя на элемент объекта TListView
TListItem *item;
// Сканирование полного списка текущей таблицы
for (int i=0; i<MainForm->Students->Count; i++)
{
// Получение i-ой строки таблицы текущей таблицы
student = (TStudent *)MainForm->Students->Items[i];
// Добавление строки в таблицу на экране
item = lvList->Items->Add();
// Заполнение значений новой строки в таблице на экране значениями из i-ой строки текущей таблицы
item->Caption = student->No;
item->SubItems->Add(student->Fio);
item->SubItems->Add(student->GroupNo);
item->SubItems->Add(student->Birthday.FormatString("dd.mm.yyyy"));
item->SubItems->Add(student->Address);
}
// Если количество строк в таблице на экране > 0, выбирается 0-ая строка
if (lvList->Items->Count > 0)
{
lvList->Items->Item[0]->Selected = true;
lvList->Items->Item[0]->Focused = true;
btAdd->Enabled = true;
btUpdate->Enabled = true;
btDelete->Enabled = true;
}
else
{
btUpdate->Enabled = false;
btDelete->Enabled = false;
}
}
Дополнительно, для всех окон приложения, создаваемых в качестве дочерних (то есть, для которых свойство FormStyle=MDIChild), необходимо создать обработчик очистки памяти объекта. Очистка памяти должна производиться во время закрытия объекта, в событии OnClose графического окна.
Обработчик закрытия дочернего окна
// файл fmStudentTableUnit.cpp, класс TfmStudentTable
void __fastcall TfmStudentTable::FormClose(TObject *Sender,
TCloseAction &Action)
{
Action = caFree;
}
Кроме числовых и текстовых данных строки таблиц содержат фотоизображения. Для отображения фотографий воспользуемся событием OnSelectItem объекта ListView. Указанное событие срабатывает всякий раз, когда происходит выбор новой строки из списка.
Обработчик выбора новой строки из списка
// файл fmStudentTableUnit.cpp, класс TfmStudentTable
void __fastcall TfmStudentTable::lvListSelectItem(TObject *Sender,
TListItem *Item, bool Selected)
{
if (Item == NULL || Selected == false)
return ;
// Получение индекса выделенной строки
int index = lvList->Items->IndexOf(Item);
TStudent *student;
// Получение значения выделенной строки
student = (TStudent *)MainForm->Students->Items[index];
// Извлечение значения фотографии из выделенной строки и установка фотографии в графический объект
imPhoto->Picture->Bitmap = student->Photo;
}