Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка ЛР по ОС.doc
Скачиваний:
3
Добавлен:
04.05.2019
Размер:
735.23 Кб
Скачать

4.2.3Добавление строки в таблицу

Вернувшись к объекту TfmStudent, добавим в конструктор этого объекта программный код, позволяющий работать с фотоизображениями. В приведённом примере imPhoto – это объект для отображения фотографии, изображённый на рисунке 4.2 пунктирной линией.

    1. Создание объекта для работы с фотоизображением

// файл fmStudentUnit.cpp, класс TfmStudent

__fastcall TfmStudent::TfmStudent(TComponent* Owner)

: TForm(Owner)

{

...

Graphics::TBitmap *Photo = new Graphics::TBitmap();

imPhoto->Picture->Bitmap = Photo;

}

В процессе выполнения приложения при отображении на экране диалога TfmStudent пользователь производит заполнение текстовых, числовых полей, а по окончании ввода, нажимает кнопку Ok. Поэтому необходимо создать обработчик нажатия кнопки Ok, в котором описать действия по добавлению строки в таблицу.

    1. Добавление строки в таблицу

// файл fmStudentUnit.cpp, класс TfmStudent

void __fastcall TfmStudent::btOkClick(TObject *Sender)

{

// Объявление указателя на строку в соответствии с типом текущей таблицы

TStudent *student;

// Выделение памяти для новой строки

student = new TStudent();

// Заполнение значений новой строки значениями из элементов графического окна

student->No = edNo->Text;

student->Fio = edFIO->Text;

student->GroupNo = edGroup->Text;

student->Birthday = dtBirthday->DateTime;

student->Address = edAddress->Text;

student->Photo->Assign(imPhoto->Picture->Bitmap);

// Добавление новой строки в общий список строк таблицы

MainForm->Students->Add(student);

}

В приведённом примере имеется несколько особенностей. Во-первых, использованный тип TStudent объявлен ранее в другом файле StructDef.h. Поэтому, для того чтобы в текущем модуле TfmStudent этот тип был доступен, необходимо произвести подключение указанного заголовочного файла, то есть добавить: #include "StructDef.h" в начало файла. Во-вторых, для использования объекта MainForm также необходимо подключить требуемый заголовочный файл, то есть добавить: #include "Main.h".

4.2.4Загрузка изображения

Для того чтобы загрузить фотоизображение, воспользуемся стандартным диалогом библиотеки VCL для открытия файлов – OpenDialog. В группе визуальных компонент выберите группу Dialogs, а в ней элемент OpenDialog и разместите его на форме. Созданный диалог для выбора файлов позволит пользователю быстро и удобно найти графическое изображение. По завершению поиска, необходимо произвести соответствующую обработку, а именно: проверить результат работы диалога (ОК или Отмена), получить имя выбранного файла и загрузить в графический объект изображение из файла.

    1. Загрузка изображения из выбранного файла

// файл fmStudentUnit.cpp, класс TfmStudent

void __fastcall TfmStudent::btChooseImageClick(TObject *Sender)

{

if (!OpenDialog1->Execute())

return ;

imPhoto->Picture->Bitmap->LoadFromFile(OpenDialog1->FileName);

}

4.2.5Отображение графического окна

Для того чтобы просмотреть результат проделанной работы, необходимо реализовать отображение созданного графического окна из главного модуля. Удобнее всего создать в главном модуле дополнительный элемент меню, который будет отвечать за отображение графического окна.

    1. Обработчик отображения графического окна

// файл main.cpp, класс TMainForm

void __fastcall TMainForm::N3Click(TObject *Sender)

{

// Создание и выделение памяти для графического окна

TfmStudent *fmStudent = new TfmStudent(this);

// Отображение графического окна

fmStudent->ShowModal();

// Удаление окна

delete fmStudent;

}

На рисунке 4.3 представлен примерный вид построенного окна.

Рисунок 4.3 – Рабочий вид окна добавления / обновления строки