![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Задание 2. Создать приложение — простой текстовый редактор, способный открывать существующий текстовый файл, создавать новый файл
Создать приложение — простой текстовый редактор, способный открывать существующий текстовый файл, создавать новый файл, сохранять файл. 1. Создайте новое приложение. 2. Переименуйте форму в MyNotepad. 3. Сделайте так, чтобы строка заголовка формы содержала надпись MyNotepad v1.0. 4. Сохраните приложение в личном каталоге под именем MyNotepad. Имя файла формы программы задайте Notepad.cpp. В процессе работы над приложением периодически сохраняйте результаты при помощи команды File/Save All. 5. В последующем (при создании приложений) может потребоваться разделитель (—), линия, отделяющая одни элементы приложения от других. Создадим, для примера, горизонтальный разделитель. Поместите в форму компонент Bevel, задайте его высоту равной 2 и сделайте так, чтобы он располагался по верхней границе формы на всю ее ширину. 6. В приложения кнопки обычно находятся на панелях. Поэтому создадим панель с требуемыми нам кнопками " New ", " Open ", " Save ". Поместите в форму компонент Panel из палитры компонентов. Переименуйте ее в ToolBar. 7. Сделайте высоту панели равной 32. Свойство BevelOuter установите в bvNone. Обратите внимание на изменения, происшедшие с панелью. 8. Сотрите значение свойства Caption. 9. Измените свойство Align на alTop. Обратите внимание на взаимное расположение панели и разделителя. 10. В качестве кнопок используем компонент SpeedButton, специально предназначенный для установки в панель. Поместите компонент SpeedButton в панель (не в форму!). Не беспокойтесь о точном положении кнопки, выравнивание осуществим позднее. 11. Переименуйте кнопку в FileOpenBtn. 12. Установите свойство Left кнопки равным 5. 13. С помощью палитры выравнивания отцентрируйте кнопку в панели по вертикали. 14. На кнопку, реализованную через компонент SpeedButton (или через BitBtn) может быть помещен графический объект — значок, характеризующий функцию кнопки. Дважды щелкните в колонке Value напротив свойства Glyph компонента SpeedButton. Откроется окно редактора изображений. При помощи соответствующих кнопок перейдите вкаталог …\Builder\Borland Shares\Images\Buttons и выберите файл Fileopen.bmp ( указать точный путь невозможно, так как он различен для разных версий Borland С++ Builder ). Если все действия были выполнены правильно, на кнопке появится графическое изображение. 15. Аналогичным образом добавьте в панель кнопки FileSaveBtn и FileNewBtn. Разместите их " без зазора" по горизонтали. 16. На все кнопки создайте короткие всплывающие подсказки, аналогичные тем которые используются в Windows. 17. Добавьте в форму компонент Memo. Данный компонент предназначен для отображения текстовой информации, а также для ее набора. Информация определяется свойством Lines компонента. 18. Добейтесь того, чтобы компонент Memo занимал все оставшееся поле формы. 19. Дважды щелкните в колонке Value инспектора объектов напротив свойства Lines. В открывшемся окне удалите надпись Memo1. 20. Разрешите использование в компоненте Memo линеек прокрутки (ScrollBar). 21. Добавьте в форму, место не имеет значения, компоненты OpenDialog и SaveDialog. У данных компонентов настройте фильтр на работу с текстовыми (*.txt) и всеми файлами (*.*). 22. Форма должна иметь вид такой же как показано на рисунке.
23. Ниже приведен листинг программы, реализующей создание нового файла, считывание и сохранение файла. Найдите функции — обработчики события щелчка по соответствующей кнопке панели Вашего приложения. Реализуйте эти функции у себя. TMyNotepad *MyNotepad; // __fastcall TMyNotepad:: TMyNotepad(TComponent*Owner) : TForm(Owner) { } // void __fastcall TmyNotepad:: FileOpenBtnClick(TObject*Sender) { if (OpenDialog1 − > Execute()) { if (Memo1 − > Modified) { int res=Application − > MessageBox(" The current file has changed. Save changes? ", " MyNotepad Message", MB_YESNOCANCEL | MB_ICONWARNING); if (res == IDYES) FileSaveBtnClick(Sender); if (res == IDCANCEL) return; } Memo1 − > Lines − > LoadFromFile(OpenDialog1 − > FileName); } } void __fastcall TMyNotepad:: FileNewBtnClick(TObject*Sender) { if (Memo1 − > Modified) { int res=Application − > MessageBox(" The current file has changed. Save changes? ", " MyNotepad Message", MB_YESNOCANCEL | MB_ICONWARNING); if (res == IDYES) FileSaveBtnClick(Sender); if (res == IDCANCEL) return; } if (Memo1 − > Lines − > Count > 0) Memo1 − > Clear(); SaveDialog1 − > FileName = " "; } // _____________________________________________________________________ void __fastcall TmyNotepad:: FileSaveBtnClick(TObject *Sender) { if (SaveDialog1 − > FileName! = " ") { Memo1 − > Lines − > SaveToFile(SaveDialog1 − > FileName); Memo1 − > Modified = false; } Else { SaveDialog1 − > Title=" Save As"; if (SaveDialog1 − > Execute()) { Memo1 − > Lines − > SaveToFile(SaveDialog1 − > FileName); Memo1 − > Modified=false; } } }
|