1.Запускаем C++ Builder.
2.Выводим на форму из палитры компонент элемент Edit.
3.В разделе инспектора объектов Events вправо от OnKeyPress два раза щелкаем мышью, получаем фрагмент кода.
4.Набираем код.
Key= AnsiUpperCase(Key)[1];
5.Запускаем на выполнение. Любая введеная буква печатается как заглавная.
В данном примере переменная Key, содержащая значение нажатой клавиши указана как указатель на адрес символа - в этом случае любые изменения, сделанные в переменной передаются обратно в вызывающую функцию. Функция AnsiUpperCase(Key) преобразует символ в заглавный.
Кроме этого существуют обработчики событий, ориентированный на обработку вспомогательных операций в сложной программе.
Исключения. Для обработки исключений(ошибок) в C++ Builder имеются специальные средства. В частности, при возникновении ошибки возможна передача управления блоку, который ориентирован на обработку этой ошибки. Для этой цели используется блок try ... except() следующего формата:
try {
исполняемый код
}
except (проверяемая пеpеменная)
{
код, исполняемый при ошибке
}
4.6 Стратегия отладки Windows-программ
Ошибки в программе могут быть самыми разнообразными. Но для Windows-приложений характерны следующие :
- вызов неверной функции, когда вместо одной функции по ошибке вызывается другая;
- вызовам Windows API передаются неправильные аргументы;
- задание неверных параметров цикла;
- ошибка в условии операторов if, switch, while и т.д., приводящая к неправильному ветвлению;
- возникновение не предусмотренного программистом варианта реакции системы.
Для отладки программ обычно используется несколько стандартных операций:
* установка точек прерывания (breakpoints);
* просмотр содержимого переменных и участков памяти;
* подстановка ложных данных для моделирования ситуации "что - если";
* ложные вызовы.
DOS-программу можно выполнять пошагово, перебираясь от одной строки исходного текста к другой В Windows же это нереально. Нужно поставить точку прерывания на интересующем вас участке программы и запустить ее на выполнение командой Run - Run. Достигнув точки прерывания, программа приостановит свое выполнение, давая возможность программисту приступить к отладочным действиям.
В программах на C++ Builder, точки прерывания удобнее всего ставить внутри обработчиков событий.
Простейший способ установить точку прерывания - нажать на клавишу <F5>. При этом выбранная для остановки строка выделяется красной полосой, на левом краю строчки появляется маленький значок "Stop".
Повторное нажатие на <F5> отменяет уже имеющуюся точку прерывания.
Другой способ установить точку прерывания - щелкнуть мышью на левом краю окна редактирования.
Когда ошибочный обработчик найден, нужно приступать к уточнению места ошибки. Для этого Можно выполнять программу шаг за шагом командой Trace Into ( клавиша <F7>) или Step Over (клавиша <F8>), проверяя, как изменяются данные программы.
После того как программа отлажена, необходимо перетранслировать ее, установив в главном меню в разделе Options->C++ опцию Release.
4.7 Использование компонент VCL в разработке программ
Использование меню.
Страница Standard содержит наиболее часто используемые компоненты – к ним относятся компоненты MainMenu и PopupMenu.
Каждому пользователю Windows, раскрывающееся меню представляет собой подробный список таких команд, как Open или Exit. В большинстве приложений в главном меню перечислены имена одного или нескольких раскрывающихся подменю.
Главное меню (компонент MainMenu). Используется для создания главного меню приложения, которое всегда отображается под заголовком окна.
Всплывающее меню (компонент PopupMenu). Используется для создания всплывающих меню, которые появляются при при щелчке правой кнопкой мыши, когда указатель, мыши находится внутри клиентной области окна.
Для того чтобы построить главное меню программы, необходимо выполнить следующее:
1. На форму главного окна поместите объект MainMenu.
По умолчанию в C++ Builder. ему присваивается имя MainMenu1.
2. Установите свойство формы Menu равным имени объекта MainMenu.
3. Дважды щелкните на объекте MainMenu1 и используйте MenuDesigner для ввода команд меню.
Для того чтобы создать всплывающее меню, которое появляется при щелчке правой кнопкой мыши, выполните следующее:
1. Поместите на форму объект РорupМеnu. По умолчанию в C++ Builder ему присваивается имя PopupMenu1.
2. Присвойте PopupMenu1 свойству формы PopupMenu.
3. Дважды щелкните на объекте PopupMenu1 и используйте MenuDesigner для ввода команд меню.
Рассмотрим пример – разработаем простейший редактор текста.
Создайте файл с именем 1.txt в каталоге, в котором будет храниться пример и запишите в него какой-либо текст. Запустите C++ Builder.
1.Поместите на форму компонент Memo. Согласно рисунка измените размеры.
В инспекторе объектов установите ScrollBars в позицию ssVertical (вертикальная полоса прокрутки). На поле Memo вы видите текст Memo1. Для того чтобы он исчезал при запуске программы щелкните мышью по форме и напишите между {и}; команду очистки окна Memo1:
Memo1->Clear();
2. Поместите на форму кнопку Button. Свойство Caption в инспекторе объектов измените на Close. Щелкните на кнопке. и напишите код:
Close(); - по этой команде программа прекращает работу.
3. Поместите на форму компоненты MainMenu и PopupMenu.
Щелкните по форме и напишите в свойствах MainMenu- MainMenu1 и PopupMenu - PopupMenu1 соответственно.
4.Щелкните два раза на компоненте MainMenu. Появляется конструктор меню. В инспекторе объектов свойство Сaption измените на &File(&- быстрая клавиша ALT+F). Нажмите клавишу Enter. Далее в конструкторе меню щелкните мышью под командой File и опять свойство Caption измените на &Open, ниже опять появляется синий квадратик напишите свойство Caption &Save, а затем на следующем пункте меню измените Caption на E&xit.
5.Щелкните мыщью рядом с &File (правее) и запишите в Caption &Help.
Таким образом все пункты меню мы записали и они должны появитсяна форме.
6.Начнем ставить в соответствие событиям (пунктам меню) программный код. Щелкните мышью на команде File, поставте курсор на Open и щелкните мышью. между командами { и } запишите код:
Memo1->Lines->LoadFromFile("1.txt");
По этой команде текст из файла 1.txt загрузится в окно Memo. Свойство Lines объекта Memo это объект типа строка символов, которая отображается в окне. Метод LoadFromFileпозволяет загрузить файл в Memo.
Перед нами редактор текста - текст можно модифицировать, а затем записать.
7.Щелкните мышью на команде File, поставте курсор на Save и щелкните мыщью. между командами begin и end; запишите код:
Memo1->Lines->SaveToFile("1.txt");
По этой команде текст запишится в файл 1.txt.
8. Наиболее интерсные действия с командой Exit.
Стандартно можно было-бы щелкнуть мышью на команде Exit и записать код Close();, но этот код у нас есть по нажатию клавиши Button программа прекращает работу, поэтому мы делаем так:
8.1.В инспекторе объектов в выпадающем меню (в шапке) выбираем опцию Exit1.
8.2 Переходим в инспекторе объектов на страницу Eventsи щелкаем мышью в поле события OnClick.
8.3.Выбираем Button1Click. То есть мы совмещаем события:
- нажатие клавиши(закрытие программы);
- выбор опции меню Exit.
9. В дизайнере меню заходи в раздел Help -щелкаем мышью и пишем код:
Canvas->TextOut(10,10,"Помощи пока нет!");
10. Добавляем всплывающее меню. Щелкаем дважды на компоненте PopupMenu.
11.Появляется дизайнер меню. Первую опцию меню указываем в Caption - &Open, следующую &Save и последнюю E&xit(также как в MainMenu).
12.Щелкаем на опции Open.В выпадающем меню инспектора объектов выбираем опцию Open2. Переходим в инспекторе объектов на страницу на страницу Event и щелкаем мышью в поле события OnClick. Находим Open1Click и щелкаем мышью (теперь мы совместили событие открытие файла 1.txtв меню MainMenu и PopupMenu);
Соответственно выбираем опцию &Save и совмещаем с событием Save1Click. Далее совмещаем опцию Exit с событием Button1Click. Далее программу запоминаем и транслируем. Программа будет выглядеть так:
//---------------------------------------------------------------------------
#include <vcl\vcl.h>
#pragmahdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Memo1->Clear();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Open1Click(TObject *Sender)
{
Memo1->Lines->LoadFromFile("1.txt");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Save1Click(TObject *Sender)
{
Memo1->Lines->SaveToFile("1.txt");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Help1Click(TObject *Sender)
{
Canvas->TextOut(10,10,"Помощи пока нет!");
}
//---------------------------------------------------------------------------
Кнопки переключатели и выключатели.
Кнопки, переключатели и выключатели - это основа графического пользовательского интерфейса, поэтому C++ Builder предоставляет целый "набор" всевозможных кнопок, переключателей и выключателей. Кроме того, имеется возможность объединять группы кнопок и использовать организующие компоненты - фаски и панели.
Кнопка (компонент Button). Стандартный управляющий элемент
Windows.
Кнопка с растровым изображением (компонент BitBtn). Компонент BitBtn работает также, как и компоненты Button, но отличаются от последних наличием цветной пиктограммы, визуально представляющей действие кнопки.
Кнопка панели инструментов (компонент SpeedButton). Обычно эти компоненты используются для создания панелей инструментов.
На кнопках BitBtnили SpeedButtonотображается пиктограмма (glyph), которая представляет собой растровое изображение Windows. Несмотря на то, что размеры пиктограмм не ограничены, обычно применяется стандартный размер - 16х16 пикселей при 16 цветах.