Кент Рейсдорф. BORLAND C++BUILDER. Раздел 2
Кент Рейсдорф. BORLAND C++BUILDER. Страница 164
1. Выберите в меню главной формы пункт File | Open. При этом будет создан обработчик данного пункта и на экране появится окно редактора кода.
2. Введите необходимый текст, чтобы обработчик выглядел следующим образом:
Этот код прежде всего открывает диалоговое окно File Open и получает имя файла. Если в диалоговом окне была нажата кнопка Cancel, функция не выполняет больше никаких действий. Если же была нажата кнопка ОК, создается новый объект TChild (TChild будет именем класса MDI, который мы создадим позже). Файл с изображением передается компоненту Image подчиненной формы; затем рабочая область этой формы подгоняется под размер изображения. В завершение свойству Caption присваивается имя выбранного файла и подчиненное окно отображается на экране.
3. Нажмите F12, чтобы перейти обратно к форме. Теперь выберите в меню пункт File | Save As. На экране будет отображен обработчик File | Save As.
4. Введите необходимый код, чтобы обработчик пункта File | Save As выглядел следующим образом:
Как видите, код для пункта File | Save As достаточно прост. В первых двух строках проверяется, активно ли подчиненное окно MDI. Если это так, то отображается диалоговое окно File | Save As. После нажатия кнопки ОК изображение сохраняется на диске с помощью метода SaveToFile() класса TPicture.
Если dynamic_cast не может выполнить приведение типов, он возвращает NULL. Попытка использования указателя NULL приведет к нарушению прав доступа, но отладчик укажет вам ошибочную строку и вы будете точно знать, где возникли проблемы. Это намного лучше, чем использование приведения типов в старой форме, когда ошибка приведения могла повлечь за собой разрушение произвольного участка памяти.
Перед тем, как продолжить, неплохо сохранить проект. Выберите в главном меню пункт File | Save All. Сохраните Unitl (это имя C++Builder присваивает по умолчанию новому модулю) как ViewMain, а проект — как ViewPict.