Стоит Windows 8 Pro, Visual Studio 2010 Express Edition . |
Простой текстовый редактор в среде программирования Borland C++Builder 6.0
Обработчики категории Edit
Обработчик команды Undo
Компонент MemoEdit не содержит метода Undo, поэтому мы должны для этого компонента послать операционной системе Windows сообщение WM_UNDO.
-
Раскройте категорию Edit и щелкните на пункте меню Undo. Оболочка создаст обработчик, который заполните так
Обработчик команды Undo категории Edit void __fastcall TMainForm::EditUndoClick(TObject *Sender) { SendMessage(MemoEdit->Handle, WM_UNDO, 0, 0); }
Обработчик команды Select All
Компонент MemoEdit содержит встроенный метод SelectAll(), воспользуемся им.
-
Раскройте категорию Edit и щелкните на пункте меню Select All. Оболочка создаст обработчик, который заполните так
Обработчик команды Select All категории Edit void __fastcall TMainForm::EditSelectAllClick(TObject *Sender) { MemoEdit->SelectAll(); }
Обработчик команды Cut
Компонент MemoEdit содержит встроенный метод CutToClipboard(), воспользуемся им.
-
Раскройте категорию Edit и щелкните на пункте меню Cut. Оболочка создаст обработчик, который заполните так
Обработчик команды Cut категории Edit void __fastcall TMainForm::EditCutClick(TObject *Sender) { MemoEdit->CutToClipboard(); }
Обработчик команды Copy
Компонент MemoEdit содержит встроенный метод CopyToClipboard() воспользуемся им.
-
Раскройте категорию Edit и щелкните на пункте меню Copy. Оболочка создаст обработчик, который заполните так
Обработчик команды Copy категории Edit void __fastcall TMainForm::EditCopyClick(TObject *Sender) { MemoEdit->CopyToClipboard(); }
Обработчик команды Paste
Компонент MemoEdit содержит встроенный метод PasteFromClipboard(), воспользуемся им.
-
Раскройте категорию Edit и щелкните на пункте меню Paste. Оболочка создаст обработчик, который заполните так
Обработчик команды Paste категории Edit void __fastcall TMainForm::EditPasteClick(TObject *Sender) { MemoEdit->PasteFromClipboard(); }
Обработчик команды Word Wrap
Для управления этим режимом воспользуемся двумя свойствами TMemo::WordWrap и TMemo::Checked. Кроме этого предусмотрим, что если режим WordWrap включен, то достаточно только вертикальной линейки прокрутки, в противном случае должны появляться две линейки.
-
Раскройте категорию Edit и щелкните на пункте меню Word Wrap. Оболочка создаст обработчик, который заполните так
Обработчик команды Word Wrap категории Edit void __fastcall TMainForm::EditWordWrapClick(TObject *Sender) { MemoEdit->WordWrap = !MemoEdit->WordWrap; EditWordWrap->Checked = MemoEdit->WordWrap; if(MemoEdit->WordWrap) MemoEdit->ScrollBars = ssVertical; else MemoEdit->ScrollBars = ssBoth; }
Создание диалогового окна About
-
Разблокируйте режим вызуального редактирования командой меню оболочки Edit/Lock Controls
-
Создайте новую форму. Уменьшите ее размер до размера типичного окна About
Отметьте, что оболочка создала два новых файла с дежурными именами unit1.cpp и unit1.h
-
Установите Name=AboutBox, Caption=Об авторах, BorderStyle=bsDialog, Position=poScreenCenter
-
Сохраните проект, присвоив файлу unit1.cpp имя About.cpp. Проследите, чтобы файл был записан в ту же папку проекта
-
Отредактируйте форму в соответствии с характеристиками выполняемой лабораторной работы, используя текстовые метки Label палитры компонентов Standard. Значения свойств Name текстовых меток оставьте по умолчанию, поскольку мы не будем в дальнейшем ими программно управлять
-
Вставьте значок в окно About. Для этого поместите на форму компонент Image вкладки Additional палитры компонентов
-
Найдите свойство AutoSize компонента Image и измените его значение на true
-
Найдите свойство Picture и через диалоговое окно редактора изображений загрузите подходящую иконку или рисунок (только не очень большой). Размер компонента автоматически подстроится под размер значка
-
Из вкладки Additional палитры компонентов поместите на форму кнопку BitBtn. Установите ее свойства Kind=bkOK, Caption=Выход. Компонент BitBtn уже содержит внутренний код для закрытия формы при нажатии кнопки
-
Из вкладки Additional палитры компонентов поместите на форму компонент Bevel, но прежде, чем отпустить кнопку мыши, обведите рамкой строки текста. Установите свойство Shape=bsFrame, чтобы изменить форму рамки
Поскольку управление формой About будет выполняться кодом файла UScratchPad.cpp, добавим в начало этого файла описание класса TAboutBox. Это можно сделать вручную, добавив инструкцию #include "About.h". Но сделайте это по другому...
-
Установите текущей главную форму MainForm. Через меню оболочки выполните команду File/Include Unit Hdr и через диалоговое окно вставьте макроинструкцию About.h. Убедитесь, что она появилась в начале файла UScratchPad.cpp
Подключение заголовочного файла About.h к файлу UScratchPad.cpp #include #pragma hdrstop #include "UScratchPad.h" #include "About.h"
Обработчики категории Help
В категории Help у нас только одна команда (вторую мы сделали недоступной), вызывающая модальное диалоговое окно About.
Обработчик команды About...
Вспомним, что диалоговому окну About мы присвоили идентификатор AboutBox. Будем вызывать его в модальном режиме.
-
Раскройте категорию Help и щелкните на пункте меню About. Оболочка создаст обработчик, который заполните так
Обработчик команды About категории Help void __fastcall TMainForm::HelpAboutClick(TObject *Sender) { AboutBox->ShowModal(); }
Подключение кнопок панели инструментов
Кнопки панели инструментов - быстрый способ выполнения команд меню.
-
Выделите кнопку FileOpenBtn одним щелчком на форме или через раскрывающийся список инспектора объектов. Установите инспектор объектов в режим Events. Для события OnClick установите обработчик FileOpenClick
-
Выделите кнопку FileSaveBtn одним щелчком на форме или через раскрывающийся список инспектора объектов. Установите инспектор объектов в режим Events. Для события OnClick установите обработчик FileSaveClick
Подключение короткой и длинной подсказок
Коротким называются всплывающие подсказки, длинные подсказки появляются в строке состояния.
Приложение в C++Builder является объектом Application, определенным по умолчанию. Когда свойство ShowHint объекта Application имеет значение true (значение по умолчанию) и курсор мыши находится над компонентом запущенного приложения, у которого свойство ShowHint включено, т.е. также имеет значение true, - генерируется событие Hint объекта Application. При этом значение свойства Hint объекта компонента копируется в значение Hint объекта Application. Если перехватить и обработать событие OnHint объекта Application и в нем вывести значение свойства Hint в строку состояния, то получим управление подсказками.
Класс TApplication имеет четыре свойства, позволяющих настраивать всплывающие подсказки. Установленные для этих свойств значения по умолчанию подходят для большинства приложений, но их можно менять.
Свойства TApplication, относящиеся к всплывающим подсказкам | |
---|---|
Свойство | Описание |
HintColor | Устанавливает цвет фона всплывающей подсказки. |
HintHidePause | Устанавливает время (в миллисекундах), по прошествии которого подсказка исчезает, если курсор мыши все еще продолжает указывать на компонент. |
HintPause | Устанавливает интервал времени (в миллисекундах) от момента задержки курсора над компонентом до появления всплывающей подсказки |
HintShortPause | Устанавливает интервал времени между отображениями всплывающих подсказок, следующих чередой при перемещении курсора по компонентам группы. |
Перехват события Hint объекта приложения
-
Добавьте в описание класса TScratchPad файла UScratchPad.h объявление функции-обработчика
Объявление функции-обработчика события Hint class TMainForm : public TForm { ....................................................... void __fastcall HelpAboutClick(TObject *Sender); private: // User declarations AnsiString nameForm; public: // User declarations __fastcall TMainForm(TComponent* Owner); private: void __fastcall OnHint(TObject *Sender); };
-
Добавьте в конец файла UScratchPad.cpp определение функции-обработчика
Определение функции-обработчика события Hint void __fastcall TMainForm::OnHint(TObject *Sender) { StatusBar->SimpleText = Application->Hint; }
-
Выберите главную форму MainForm в селекторе объектов Object TreeView. Переключитесь на вкладку Events в инспекторе объектов и создайте обработчик события OnCreate для главной формы. Введите переадресацию события OnHint приложения на нашу функцию-обработчик
Переадресация на наш обработчик void __fastcall TMainForm::FormCreate(TObject *Sender) { Application->OnHint = &OnHint; }