Печатать эту главуПечатать эту главу

§ 20. Создание приложений

20.3. Создание приложения «Блокнот»

Разместить на форме (пример 20.7) следующие компоненты:

  • рабочая область для текста — Memo1;
  • диалоги для работы с файлами — OpenDialog1, SaveDialog1;
  • диалоги для настройки внешнего вида приложения — FontDialog1, ColorDialog1;
  • главное меню — MainMenu.

Компонент Мемо предназначен для набора и редактирования текста. Для того, чтобы компонент занимал все клиентскую часть формы, необходимо установить у свойства Align значение asClient, (пример 20.8). Добавить вертикальную полосу прокрутки, выбрав значение ssVertical для свойства ScrollBars.

Для того, чтобы очистить рабочую область компонента, необходимо вызвать редактор строк (String List Editor) и удалить текст Memo1. Редактор строк вызывается нажатием кнопки    у свойства компонента Lines (пример 20.9).

Структура меню представлена в примере 20.10. Для написания обработчиков пунктов меню нужно в инспекторе объектов выбрать соответствующий пункт меню, перейти на вкладку Events и выбрать событие OnClick. Поскольку событие OnClick является событием по умолчанию, то двойной клик по пункту в редакторе меню или по соответствующей строке в разделе Structure создаст функцию обработчик.

Обработчики событий для каждого из пунктов меню и создания формы представлены в примере 20.11.

Для сохранения и загрузки файлов опишем глобальную переменную FileName:

String FileName;

Обработчик пункта меню «Новый» (N3) очищает строки компонента Memo от введенного ранее текста.

Обработчики пунктов меню «Открыть» (N4) и «Сохранить» (N5) работают с файлом. Имя файла добавляется к заголовку окна.

Обработчик пункта меню «Выход» (N7) закрывает главную форму проекта.

Обработчик пункта меню «Шрифт» (N8) приписывает шрифту, связанному с компонентом Memo, свойства, выбранные пользователем.

Обработчик пункта меню «Цвет фона» (N9) устанавливает для Memo цвет фона, выбранный пользователем.

Окно работающего приложения показано в примере 20.12.

Для компонента Memo определены следующие действия: Копировать (Ctrl + C), Вырезать (Ctrl + X), Вставить (Ctrl + V), Отменить (Ctrl + Z).

Пример 20.7. Форма на этапе конструирования:

Пример 20.8. Настройка клиентской области:

Пример 20.9. Редактор строк:

Пример 20.10. Структура меню:

Пример 20.11. Обработчики событий:

void __fastcall TForm1::FormCreate
              (TObject *Sender) {

  OpenDialog1->InitialDir =

    ExtractFilePath(ParamStr(0));

  SaveDialog1->InitialDir = 

    OpenDialog1->InitialDir;

}

 

void __fastcall TForm1::N3Click
(TObject *Sender) {

  Memo1->Lines->Clear();

}

 

void __fastcall TForm1::N4Click
(TObject *Sender) {

  if (OpenDialog1->Execute()) {

    FileName = OpenDialog1->FileName;

    Memo1->Lines->LoadFromFile(FileName);

    Form1->Caption = "Блокнот " + FileName;

  }

}

 

void __fastcall TForm1::N5Click
(TObject *Sender) {

  if (SaveDialog1->Execute()) {

    FileName = SaveDialog1->FileName;

    Memo1->Lines->SaveToFile(FileName);

    Form1->Caption = "Блокнот " + FileName;

  }

}

 

void __fastcall TForm1::N7Click
(TObject *Sender)

{

   Form1->Close();

}

 

void __fastcall TForm1::N8Click

(TObject *Sender) {

  if (FontDialog1->Execute())

    Memo1->Font->Assign(FontDialog1->Font);

}

 

void __fastcall TForm1::N9Click

(TObject *Sender) {

  if (ColorDialog1->Execute())

    Memo1->Color = ColorDialog1->Color;

}

 Пример 20.12. Работающее приложение: