Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
21_ИСР_C++Builder6_14.doc
Скачиваний:
13
Добавлен:
10.04.2019
Размер:
2.78 Mб
Скачать

Примеры программирования.

Пример 21.1. Создать приложение, в котором при щелчке мыши на кнопке появляется приветствие.

  1. Запустить C++Builder.

  2. Командой File/New открыть новое приложение, выбрав в открывшемся каскадном меню раздел Application.

  3. Перенести на открывшуюся пустую форму кнопку TButton со страницы Standard палитры компонентов. Для этого выделяют пиктограмму и щелкают мышью в нужном месте формы. На форме появляется кнопка с именем по умолчанию Button1.

  4. Выделить на форме кнопку с именем Button1, присвоенным по умолчанию. Перейти в инспектор объектов и изменить ее свойство Caption на значение «Начало».

  5. Перенести на форму со страницы Standard палитры компонентов метку Label1. Здесь будет появляться текст при нажатии кнопки «Начало».

  6. Для задания стиля шрифта сообщения в метке Label1 в окне инспектора объектов используют свойства Font (шрифт), Style (стиль) и т.д.

  7. Убрать текст в свойстве Caption метки Label1, чтобы до нажатия кнопки «Начало» экран оставался пустым.

  8. Поскольку текст на экране должен появляться при нажатии кнопки «Начало», следует написать обработчик события OnClick. Заготовку для этого обработчика можно получить двумя способами.

  • Выделить кнопку Button1 на форме и перейти в инспектор объектов, открыть в нем страницу событий (Events), найти событие кнопки OnClick, сделать двойной щелчок в окне справа от имени этого события;

  • Сделать двойной щелчок на компоненте Button1 на форме.

После этого произойдет переход в окно редактора кода, в котором окажется заготовка функции обработчика событий:

void _ _fastcall TForm1::Button1Click(TObject *Sender)

{

}

Между фигурными скобками следует написать оператор:

Label1->Caption = “Мы начинаем осваивать С++Builder.”;

Пример 21.2. Обработчик щелчка левой кнопкой мыши на форме.

void _ _fastcall TForm1::FormClick(TObject *Sender)

{ MessageDlg( "A study of events", mtInformation,

TMsgDlgButtons()<<mbOK, 0);

}

Все шаги для создания этой программы аналогичны приведенным в примере 13.1.

При запуске этой программы каждый раз при щелчке левой кнопкой мыши на форме появляется диалоговое окно вида, показанного на рис.21.5 .

Рис.21.5. Окно формы.

При возникновении определенного события операционная система сопровождает передачу сообщения о событии несколькими служебными информационными битами. Например, при нажатии кнопки мыши программа получает данные о том, где произошло событие и какая именно кнопка мыши была нажата. Доступ к этой информации можно получить в окне Object Inspector (вкладка Events).

Пример 21.3. Обработка событий OnMouseDown.

void __fastcall TForm10::FormMouseDown(TObject *Sender, TMouseButton Button,

TShiftState Shift, int X, int Y)

{

if (Shift.Contains(ssRight))

{ Canvas->Brush->Style = bsClear;

Canvas->TextOut(X, Y, "MouseRightKey");

}

}

Каждый раз при нажатии правой кнопки мыши на экране появляется надпись MouseRightKey. При этом устанавливается стиль кисти bsClear, который делает фон прозрачным.

Функция CanvasText распечатывает текст, начиная с позиции, заданной перемещенными X и Y, где X и Y – координаты курсора мыши в момент нажатия клавиши.

Пример 21.4. Ввод чисел в двух разных полях и умножение введенных данных.

Открыть новое приложение и разместить в нем следующие компоненты: два окна редактирования (LabeledEdit или Edit) со страницы Additional, одну панель Panel, одну кнопку Button и одну метку Label (для подписи) со страницы Standard и одну метку(три метки в случае окна редактирования Edit).

Изменить надписи в метках компонентов на «Множимое», «Множитель», «Произведение», а свойство Caption кнопки Button на «Посчитаем!».

Обработчик нажатия кнопки имеет вид:

void __fastcall TForm13::Button1Click(TObject *Sender)

{

Panel1->Caption = LabeledEdit1->Text+"*"+

LabeledEdit2->Text+"="+

FloatToStr(StrToFloat(LabeledEdit1->Text)*

StrToFloat(LabeledEdit2->Text));

}

При использовании компонента Edit LabeledEdit заменить на Edit.

Графические возможности C++Builder.

Многие компоненты в C++Builder имеют свойство Canvas, которое представляет собой графические возможности компонента.

Canvas имеют формы, компоненты Image, PaintBox, BitMap и др.

Каждая точка графического поля(канвы) имеет координаты X и Y, при этом X возрастает при перемещении слева направо, Y – сверху вниз. Здесь координаты измеряются в пикселах. Пиксел – наименьший графический объект на экране. Кроме координат пиксел имеет еще одно свойство – цвет, для описания которого используется тип TColor. Цвет можно задать с помощью предопределенных констант: clRed – красный, clBlack – черный, clGreen – зеленый и т.д. или с помощью так называемого RGB-кода:

$00FF0000 – синий,

$0000FF00 – зеленый,

$000000FF – красный,

$00000000 – черный,

$00FFFFFF – белый.

Рисовать можно двумя способами: по пикселам и с помощью пера. При рисовании по пикселам рисунок получается дискретным, т.е. состоящим из отдельных точек, при рисовании пером – рисунок непрерывный.

При рисовании по пикселам используется свойство канвы Pixels, которое представляет собой матрицу CanvasPixels[int X][int Y], каждая точка которой определяет цвет пиксела на канве.

Пример 21.5. Рисование по пикселам.

float X, Y; //координаты точек изображаемой функции

int PX, PY; //координаты соответствующих им пикселов

float Xmax, Xmin, Ymax, Ymin; //координаты максимальных и //минимальных значений X и Y для данного отрезка функции,

//необходимые для масштабирования графика и его равномерного

//расположения на экране

for(PX = 0; PX <= ImageWidth; PX++)

{ X = Xmin+PX*(Xmax – Xmin) / Image1Width;

Y = F(X); //F(X) – функция, график которой мы хотим //построить

PY = Image1Height – (Y – Ymin)*Image1Height / (Ymax – Ymin);

//Будем рисовать красным цветом:

Image1CanvasPixels[PX][PY] = clRed;

}

Здесь Image1Height и Image1Width - высота и ширина экрана (в пикселах).

Пример 21.6. Рисование функции y = cos(x) на отрезке x[0, 2].

Для данной функции X изменяется на отрезке от 0 до 2, Y – от -1 до 1, поэтому Ymin = -1, Ymax = 1.

Создаем форму и помещаем на нее компонент Image и кнопку с надписью y = cos(x).

Обработчик события OnDblClick (двойной щелчок левой кнопкой мыши) будет иметь вид:

#define PI 3.14159 //или const float Pi = 3.14159;

float X, Y, Xmax=2*PI, Xmin=0, Ymax=1,Ymin=-1;

int PX, PY;

for(PX=0; PX<=Image1->Width; PX++)

{ X=Xmin+PX*(Xmax-Xmin) / Image1->Width;

Y=cos(X);

PY=Image1->Height-(Y+Ymax)* Image1->Height / (Ymax-Ymin);

Image1->Canvas->Pixels[PX][PY]=clRed;

}

Если нужен непрерывный рисунок, используют свойство Pen – перо, которое в свою очередь, тоже имеет ряд свойств: Color –цвет, Width – ширина линии в пикселах(по умолчанию – 1), Style – вид линии.

Свойство канвы PenPos определяет текущую позицию пера. Перемещение пера без прорисовки линии осуществляется методом канвы MoveTo(X, Y). Метод LineTo(X, Y) рисует линию от текущего положения пера к точке с координатами (X, Y).

Пример 21.7. Рисование графика из примера 13.6 с помощью пера.

#define PI 3.14159 //или const float Pi = 3.14159;

float X, Y, Xmax=2*PI, Xmin=0, Ymax=1,Ymin=-1;

int PX, PY;

for(PX=0; PX<=Image1->Width; PX++)

{ X=Xmin+PX*(Xmax-Xmin) / Image1->Width;

Y=cos(X);

PY=Image1->Height-(Y+Ymax)* Image1->Height / (Ymax-Ymin);

Image1->Canvas->Pixels[PX][PY]=clWhite;

Image1->Canvas->LineTo(PX, PY);

}

С помощью пера можно рисовать не только линии, но и фигуры в табл.13.1.

Таблица 21.1