- •Задача 1. Конвертер
- •Задача 2. Фунты-килограммы
- •Задача 3. Сила тока.
- •Задача 4. Сопротивление
- •Задача 5. Кафе
- •Задача 6. Любимый напиток
- •Задача 7. Электроэнергия
- •Задание 8. Осаго
- •Задание 9.Просмотр иллюстраций
- •Задача 10. Калькулятор
- •Задача 11. Калькулятор-2
- •Задача 12.Секундомер
- •Задача 13. Угадай число
- •Задание 14.Угадай число-2
- •Задание 15.Запуск Internet Explorer
- •Задание 16.Конвертор
- •Задание 17.Конвертор 2
- •Задание 18.Погода
- •Задание 19.Средняя температура
- •Задание 20. Простая база данных
- •Задание 21. Редактор текста
- •Задание 22. Приветствие
- •Задача 23. Олимпийский флаг
- •Задание 24. Диаграмма
- •Задача 26. Круговая диаграмма.
- •Задача 27. Просмотр иллюстраций.
- •Задача 28 .Часы
- •Задача 29. Пинг понг.
- •Задача 30. Полет в облаках
- •Задача 31.Баннер
- •Задача 32. Фоновый рисунок
- •Задача 33. Wav
- •Задача 34. Mp3 Player
- •Задача 35.Воспроизведение midi
- •Задача 36.Compact Disk Player (версия 1)
- •Задача 37.Compact Disk Player (версия 2)
- •Задача 38.VideoPlayer
- •Задача 39. Анимация
- •Задача 40. Записная книжка
- •Задача 41 Магазин
- •Задача 42. Ежедневник
- •Задача 43. Сапер
- •Часть 1. Примеры и задачи
- •Часть 1. Примеры и задачи
- •Задача 44 Игра 15
- •Часть 1. Примеры и задачи
- •Задача 45. Игра "Собери картинку" (Puzzle)
- •Задача 46 Игра "Парные картинки"
- •Задача 47. Экзаменатор
- •Задача 48. Экзаменатор-2
- •Задача 49. Календарь
- •Задача 50. Будильник
- •Задача 51. Очистка диска
- •Задача 52.Печать
- •Задачи для самостоятельного решения Задача 1. Скидка
- •Задача 2.Доход по вкладу
- •Задача 3. Таблица умножения
- •Задача 4.Поездка на автомобиле
- •Задача 5.Стоимость разговора
- •Задача 6. Стеклопакет
- •Задача7. Калькулятор
- •Задача 8. Электроэнергия
- •Задача 9. Добрый день
- •Задача 10. Часы
- •Задача 11. Узоры
- •Задача 12. Курс доллара
- •Задача 13. Диаграмма
- •Задача 14. Домашние животные
- •Задача 15. Кораблик
- •Задача 16. Сапер
- •Задача 17 .Экзаменатор
- •Задача 18. База данных "Расходы"
Задание 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;
