Стоит Windows 8 Pro, Visual Studio 2010 Express Edition . |
Простой текстовый редактор в среде программирования Borland C++Builder 6.0
Задание значений Hint объектов компонентов
Теперь все готово для отображения коротких и длинных подсказок объектом приложения. Но нужно ввести в каждый компонент интерфейса сами подсказки. Для этого нужно последовательно выделять каждый компонент приложения, включать свойство ShowHint и заполнять нужным текстом свойство Hint по формату
Hint = всплывающая_подсказка | текст_строки_состояния
-
Выделите кнопку FileOpenBtn на панели инструментов. Включите свойство ShowHint для отображения всплывающей подсказки, а в свойство Hint введите текст
Открыть|Открыть существующий файл с текстом
-
Повторите эти шаги для других элементов в соответствии с таблицей
-
Для выделения компонентов меню раскройте объект MainMenu в селекторе объектов Object TreeView. Следите за тем, чтобы для кнопок и соответствующих пунктов меню текст подсказок был одинаков
Обратите внимание, что для объектов-пунктов меню свойство ShowHint отсутствует, следовательно всплывающие подсказки для них не предусмотрены, поскольку названия пунктов сами информативны. Поэтому в свойстве Hint меню можно короткую подсказку не указывать.
Добавление контекстного меню
Многие компоненты в C++Builder имеют имеют свойство PopupMenu, следовательно для них можно подключить контекстное меню. При нажатии правой кнопки мыши на этом компоненте на экране будет автоматически отображено соответствующее меню. Обработчики для пунктов контекстного меню пишутся также, как для пунктов главного меню.
Визуальное проектирование контекстного меню
-
Во вкладке Standard палитры компонентов выберите компонент PopupMenu и поместите его в любое место формы. Он является невизуальным, поэтому не будет виден во время выполнения приложения
-
Измените значение свойства Name на MemoPopup
-
Дважды щелкните на значке PopupMenu для запуска редактора меню
Получим меню не с нуля, а скопируем часть главного меню. Для этого
-
Щелкните правой кнопкой мыши для запуска контекстного меню редактора
-
Выберите пункт Select Menu
-
В открывшемся диалоговом окне будет показан список меню, доступных приложению. Выберите MainMenu и нажмите кнопку OK
-
Откройте категорию Edit и выделите первый пункт, затем удерживая клавишу Shift - последний. При этом выделятся все пункты категории
-
Для копирования выбранных пунктов в буфер обмена, выберите в главном меню оболочки пункт Edit/Copy или нажмите Ctrl+C
-
Снова выберите пункт Select Menu в контекстном меню редактора. На этот раз выберите для редактирования PopupMenu. Редактор меню опять отобразит пустое контекстное меню
-
Выберите в главном меню оболочки пункт Edit/Paste или нажмите Ctrl+V. Пункты будут вставлены из буфера обмена
-
Измените значения свойств Name для новых пунктов меню на более осмысленные
-
Подключите созданное нами меню MemoPopup к компоненту MemoEdit, указав в его свойстве PopupMenu имя MemoPopup
Обратите внимание, что сразу у этого свойства появилось дерево подсвойств, с помощью которых можно осуществлять управление контекстным меню.
-
Постройте приложение и убедитесь, что контекстное меню вызывается, но пункты его не работают
Создание обработчиков пунктов контекстного меню
Поскольку контекстное меню - это всегда (или почти всегда) дублирование пунктов главного меню, то подключим к этим пунктам уже готовые обработчики, созданные нами ранее для пунктов главного меню.
-
Щелкните дважды на значке PopupMenu, чтобы вызвать редактор меню. Выделите первый пункт Undo и в инспекторе свойств установите режим Events. Найдите свойство OnClick для выделенного элемента PopupUndo, раскройте список и подключите обработчик EditUndoClick
-
Повторите шаги для всех пунктов контекстного меню
-
Постройте приложение и испытайте работу контекстного меню
Обратите внимание, что флажок против пункта WordWrap остается всегда включенным, хотя режим заворота текста редактора переключается. Для исправления этого внесите изменения в обработчик EditWordWrapClick(). Сделайте это самостоятельно!!!
Установка порядка переключения элементов дизайна
Порядок переключения ( tab order ) - это последовательность, в которой компоненты получают фокус ввода ( input focus ) при нажатии клавиши Tab.
Формы C++Builder автоматически поддерживают перемещение между компонентами с помощью клавиши Tab. Вы можете выбирать следующий компонент, нажимая Tab, и возвращаться обратно, используя комбинацию Shift+Tab.
Существуют две разновидности компонентов. Компоненты оконного типа (windowed) принимают фокус ввода. К ним относятся Edit, Memo, ListBox, ComboBox, Button и другие. Компоненты неоконного типа (non-windowed) не реагируют на клавиатуру. Такими компонентами являются Image, SpeedButton, Label, Shape, компоненты меню и другие.
Порядок переключения устанавливается только для компонентов оконного типа. Только у них есть свойство TabOrder и свойство TabStop. Свойство TapOrder задает порядок переключения, а свойство TabStop определяет, участвует ли компонент в этом процессе.
Порядок переключения можно определять двумя способами:
- Задавать значение свойства TabOrder для каждого компонента вручную. Нумерация компонентов в последовательности переключения начинается с нуля. Следующий компонент последовательности должен иметь значение TabOrder=1 и т.д.
- Воспользоваться диалоговым окном Edit Tab Order оболочки
Для установки порядка переключения выполните следующее:
-
Щелкните в любом месте дизайнера форм правой кнопкой мыши
-
Выполните пункт контекстного меню оболочки Edit Tab Order
-
Установите порядок переключения так, чтобы MemoEdit был первым, и нажмите кнопку OK
-
Проверьте, чтобы свойство TabStop компонента MemoEdit было включено, а у компонента SpeedBar это свойство выключите
Теперь при запуске приложения фокус ввода всегда будет иметь только компонент MemoEdit.
Синхронизация доступности пунктов меню
Запустите приложение и отметьте, что имеется неестественная асинхронность в доступности пунктов меню. Например, после открытия файла, если текст не изменялся, то сохранять ничего не нужно и пункт меню Сохранить должен быть недоступен. Или если при редактировании текст не был выделен, то пункты меню Cut и Copy должны быть недоступны.
-
Устраните этот недостаток самостоятельно, используя систему помощи C++Builder
Тестирование приложения
-
Постройте проект и проверьте всю заложенную нами в приложении функциональность
Внешний вид приложения при запуске должен быть примерно таким
-
Установите режим компиляции Release без поддержки отладочной информации. Для этого выберите в главном меню оболочки пункт Project/Options. Выберите вкладку Compiler и нажмите слева внизу кнопку Release, чтобы выключить поддержку отладочной информации. Заново постройте проект и убедитесь, что загрузочный файл остался почти прежних размеров
Вся отладочная информация в C++Builder хранится в отдельном файле ScratchPad.tds.
-
Сдайте работу преподавателю !!!