Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
отчет мой.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
4.46 Mб
Скачать

Задание 21. Редактор текста

Программа МEdit (Micro Editor) (Рис. 27 и 28) демонстрирует использование компонентов RichEdit, MainMenu, ToolBar, SpeedButton, OpenDialog И saveDialog, а также отображение информации о программе вотдельном окне. Информация о программе отображается в окне О программе MEedit, которое появляется в результате выбора соответствующей команды в меню Справка.

Рис 27

Рис 28

Вывод: Научились работать скомпонентами RichEdit, MainMenu, ToolBar, SpeedButton, OpenDialog, SaveDialog сохранять текст в документ и загружать из него.

Листинг

#include "about.h" // директива вставлена вручную

TForml *Forml; AnsiString aFileName; // имя редактируемого файла

// конструктор формы fastcall TForml::TForml(TComponent* Owner) : TForm(Owner) { aFileName = "";

/* Задать функцию обработки события Click для кнопок панели инструментов Внимание! Сначала надо создать функции обработки события Click для команд Файл/Открыть и Файл/Сохранить, затем - вставить в текст следующие две инструкции. */ SpeedButtonl->OnClick = imOpenClick; SpeedButton2->0nClick = imSaveClick;

// сохранить текст в файле bool fastcall TForml::SaveText()

Файлы

// значение функции SaveText равно false, если // в окне Сохранить пользователь сделал щелчок // на кнопке Отменить if ( aFileName == "" ) { // получить у пользователя имя файла //SaveDialogl->FileName = "Text.txt"; SaveDialogl->Options « ofPathMustExist « ofOverwritePrompt; if ( SaveDialogl->Execute() ) aFileName = SaveDialogl->FileName; else return false; // пользователь закрыл окно // щелчком на кнопке Отменить } // записать текст в файл RichEditl->Lines->SaveToFile(aFileName); return true;

// команда Файл/Открыть void fastcall TForml::imOpenClick(TObject *Sender) { int r;

// если текст изменен, то его надо сохранить if ( RichEditl->Modified ) { // текст изменен г = MessageDlg("Текст был изменен.\п" "Сохранить изменения?", mtWarning, TMsgDlgButtons () « mbYes « mbNo « mbCancel, 0);

if ( r == mrCancel )

78 Часть 1. Примеры и задачи

// в окне сообщения пользователь Cancel // щелкнул на кнопке return;

// здесь пользователь выбрал Yes if ( ( г == mrYes ) && ( ! SaveText() )) return;

// открыть файл OpenDialogl->FileName = "*.txt"; OpenDialogl->Options « ofPathMustExist « ofFileMustExist;

if ( OpenDialogl->Execute() )

{

RichEditl->Lines->LoadFromFile(OpenDialogl->FileName); RichEditl->Modified = false; Fomnl->Caption = "MEdit - " + OpenDialogl->FileName; aFileName = OpenDialogl->FileName;

// команда Файл/Сохранить void fastcall TForml::imSaveClick(TObject *Sender)

{

// записать текст в файл if ( SaveText() ) { RichEditl->Modified = false; Forml->Caption = "MEdit - " + aFileName;

// команда Файл/Выход

Файлы 79

void fastcall TForml::imExitClick(TObject *Sender)

{

Forml->Close(); /* возникает событие FormCloseQuery, функция которого проверяет, внесены ли изменения в текст */

// пользователь сделал щелчок на кнопке "Закрыть окно" void fastcall TForml::FormCloseQuery(TObject *Sender, bool &CanClose) { int r; if ( RichEditl->Modified ) // текст изменен

{

г = MessageDlg("Текст был изменен.\n" "Сохранить изменения?", mtWarning, TMsgDlgButtons() « mbYes « mbNo « mbCancel, 0);

switch ( r )

{

case mrYes : // пользователь щелкнул на кнопке Yes if ( ! SaveTextO ) CanClose = false; // окно не закрывать break;

case mrCancel : // пользователь щелкнул на Cancel CanClose = false; // продолжить работу // с текстом

80 Часть 1. Примеры и задачи

// команда Параметры/Панель инструментов void fastcall TForml::imToolBarClick(TObject *Sender) { // скрыть/отобразить панель инструментов ToolBarl->Visible = ! ToolBarl->Visible,

// поставить/убрать "галочку" в меню Параметры/Панель // инструментов imToolBar->Checked = ! imToolBar->Checked;

// команда Справка/О программе void fastcall TForml::imAboutClick(TObject *Sender) { TAboutForm *AboutForm; // свойству Position формы AboutForm надо присвоить // значение poOwnerForm AboutForm = new TAboutForm (this); AboutForm->ShowModal(); delete AboutForm;

/* Модуль формы "О программе" (about.cpp). Ссылку на этот модуль (директиву iinclude "about.h") надо поместить в модуль главной формы (MEditFrm.cpp) */ // щелчок на кнопке ОК void fastcall TAboutForm: :ButtonlClick(TObject *Sender)

ModalResult = mrOk;