RSS

Главное меню, диалоги открытия и сохранения файлов в Delphi. Блокнот v1.1. Часть 1

На прошлом уроке мы создали простейшую форму чтения из текстового файла test.txt, его редактирование и последующее сохранение в него же. Это, конечно же, очень далеко напоминает блокнот, идущий в комплекте с ОС Windows. В нашем блокноте открытие происходит только одного файла и сохранение в него же. Открытие производится при нажатии на кнопки, которые расположены на самой форме и никак не вписываются в удобство интерфейса. Первым делом давайте представим нашу программу пользователю в более удобном виде, добавим главное меню, которое является неотъемлемой частью всех прикладных приложений.

В Delphi уже разработан визуальный компонент «MainMenu», позволяющий быстро и легко реализовать стандартное главное меню. Этот компонент находится на вкладке «System» палитры компонентов:

mainmenu в delphi (главное меню в delphi)

При использовании этого компонента, в нашу форму встраивается поле под заголовком формы. Давайте немного изменим вид нашего блокнота (возьмем за основу MyNotepad v1). Уберем кнопки «Открыть» и «Закрыть», при этом очистите их код, достаточно удалить команду, расположенную в процедуре кнопок, между begin end, например, для кнопки «Открыть» удалить только «txt.Lines.LoadFromFile(ExtractFilePath(application.ExeName)+(‘\test.txt’));», после чего, при сохранении или запуске проекта, эти процедуры автоматически будут удалены. Немного расширим текстовое поле, например, так:

Для того что бы форма автоматически приняла размеры по краям расположенных на ней компонентов, можно включить свойство формы «AutoSize»:

Все. Немного видоизменили.

Теперь добавляем на форму компонент MainMenu, расположенный на вкладке «System» в палитре компонентов. Для добавления, достаточно его выбрать на палитре компонентов и щелкнуть один раз ЛКМ по форме. Для того чтобы создать пункты главного меню, кликните два раза ЛКМ по изображению компонента, находящегося на форме:

У вас откроется редактор пунктов меню:

Щелкаем ЛКМ по синей области, и вводим свойство «Caption» — «Файл»

Будет создан главный пункт меню «Файл». Кликните еще раз по созданному пункту «Файл», после чего у Вас появится вложенное пустое поле. В него введите «Открыть…» и задайте для этого пункта имя «fOpen» в свойстве Name

Для удобства работы с приложениями используются горячие клавиши. При задании горячих клавиш своим приложениям необходимо по максимум использовать общие для всех приложений сочетания, принятые в системе Windows. Например, Ctrl+O – открыть файл, Ctrl+S – сохранить и т.д.

Зададим нашему пункту сочетание Ctrl+O, по нажатию которого, будет происходить вызов диалога открытия файла. Для этого достаточно в свойстве «ShortCut» выбрать это сочетание из списка:

Добавим еще два пункта «Сохранить» и «Сохранить как…», при этом для «Сохранить» будем использовать горячую клавишу Ctrl+S, а для «Сохранить как» не будет горячих клавиш (Но Вы, при желании, можете установить). Имена пунктов «fSave» и «fSaveAs».

И еще добавим пункт «Выход» без горячих клавиш, который будет закрывать наше приложение.

Для удобного восприятия и группировки меню, необходимо его разделить на части. Чтоб это сделать, достаточно в новом пункте меню, в свойство Caption, записать «-», после чего будет создана разделительная черта. Итоговый вид меню будет выглядеть так:

Обратите внимание, на нашей форме появилось главное меню:

Диалоги OpenDialog и SaveDialog

Для открытия и сохранения файлов используются формы диалогов, позволяющие выбрать файл(ы), отфильтровать их по типам, которые поддерживаются программой. Пример диалога:

Такие диалоговые окна уже реализованы в среде Delphi. Располагаются они на вкладке «Dialogs»

Для нашего приложения потребуются OpenDialog и SaveDialog, выберите их и добавьте на форму, аналогично компоненту MainMenu.

Задайте имена этим диалогам fOpenDialog, fSaveDialog

Если кликнуть два раза по иконке компонента, то откроется форма диалога:

Как Вы видите, диалоговое окно не имеет фильтров по типам файлов. Для того чтоб создать список поддерживаемых типов, необходимо выделить тип диалога и перейти в пункт «Filter»

Нажав на «» откроется окно редактирования фильтров:

Наш блокнот открывает файлы формата txt, а так же можно осуществлять попытки открытия  файлов, которые предположительно содержат текст, например «html».

Создадим два фильтра следующим образом:

Теперь при двойном клике по диалогу открытия мы видим, что файлы отображаются согласно выбранного фильтра:

Если нужно чтоб по умолчанию стоял определенный фильтр, необходимо в свойстве «FilterIndex» указать номер фильтра в списке:

Аналогично создайте фильтр для диалога сохранения. Только в случае сохранения нам нужен один тип файла «Текстовый файл (*.txt)». Также, при сохранении неплохо бы включить сообщение, которое будет отображаться в случае перезаписи файла:

Для этого разверните список «Options» диалога fSaveDialog и измените параметр ofOverwritePrompt с false на true:

На этом пока остановимся. В следующей части урока перейдем к кодингу созданных элементов.