Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции / lect18.doc
Скачиваний:
7
Добавлен:
20.05.2014
Размер:
92.16 Кб
Скачать

19.1 Пример программы

Разработаем программу-«страшилку». Имея заголовок «Программа бесплатного доступа в Интернет », она будет работать с окнами и полосой прокрутки, а в конце выдавать сообщение, что диск С форматирован. Конечно, форматирования диска при этом не будет.

Запустим Builder и выберем имена для текста на С++ и проекта

( см. раздел 17.6). Создадим на главной форме надпись Label1,

кнопку Button1 и два окна редактирования Edit1, Edit2. Размеры и расположение

этих объектов легко изменяются (отметить и использовать стрелки). Укажем здесь,

что размеры объектов, как и ряд других параметров, можно изменять тремя способами:

1) растягивая или сжимая объекты на экране с помощью курсора, 2) изменяя значения

их свойств в Инспекторе объектов, 3) изменяя значения их свойств в программе.

Поместим в нижнюю часть формы компонент ScrollBar – это горизонтальная (свойство Kind) полоса прокрутки. Положение ползунка будет изменяться в течение

нескольких секунд от 0 до 100%, имитируя исполнение программы. Чтобы получить такое время работы, используем стандартную функцию задержки sleep языка С, для которой нужен заголовочный файл dos.h. Функция sleep ( ) имеет один целый аргумент

и реализует задержку в сек.

Пусть форма будет иметь следующий вид.

- - - - - - - - - - - - - - - -

Label1

Button1

Edit1

Edit2

ScrollBar1

SSSs

- - - - - - - - - - - - - - - -

Рис. 19.1 Форма и объекты на ней.

В Инспекторе объектов в свойство Caption надписи Label1 занесем название

«Программа бесплатного доступа в Интернет».

Далее щелкнем 2 раза по кнопке и запишем в функцию Button1Click текст программы. Кроме метода Button1Click, используем также конструктор TForm1::TForm1.

Заготовка для него расположена чуть выше текста функции Button1Click.

Запишем в него только 2 оператора ( см. ниже). Эти операторы при создании формы будут сразу выполнены.

( Вместо конструктора TForm1::TForm1 можно использовать метод TForm1::FormCreate. Его можно вызвать, щелкнув дважды в любом месте формы, и затем записать в эту функцию те же два оператора.)

#include <stdio.h> // for sprintf

#include <fstream.h>

#include <dos.h> // for sleep

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1 (TComponent* Owner) : TForm(Owner)

{ Form1->Edit1->Text=" Нажать " ;

Form1->Edit2->Text=" кнопку ";

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click (TObject *Sender)

{ int nend= 15; // столько шагов ползунка

int secDelay= 1; // задержка ползунка в сек

char s[80];

ShowMessage("Gratis!"); // gratis (лат.)=бесплатно

ofstream cout ("d:\\Papka\\myz1.txt", ios::app);

if (!cout) ShowMessage("No file");

sprintf (s, " nend =%i secDelay=%i", nend, secDelay);

Application->MessageBox ( s, "From Button1Click", 0);

for ( int j=0; j<=nend; j++ ) // цикл для ползунка

{ sleep (secDelay);

int jpolz = 100.* ( j / float(nend) );

ScrollBar1 ->Position = jpolz;

}

Edit1->Text= "Извините!"; //::::: или Edit1->TEdit::Text

Edit2->Text= " Выполнено форматирование диска С ! Sic volo!";

Beep( );

Form1-> Canvas->Pen->Color = clBlack;

Canvas->Brush->Color = clRed;

Canvas->Ellipse(450,350,550,400); Beep( );

}

//---------------------------------------------------------------------------

Многие из операторов уже рассматривались ранее, и здесь рассмотрим

только новые и сложные.

Имя TForm1 – это имя класса, для которого создаются конструктор

TForm1 :: TForm1 и метод TForm1 :: Button1Click.

Модификатор _fastcall показывает, что аргументы передаются в функцию

через процессорные регистры, что ускоряет вызов.

TObject - базовый класс для всех классов библиотеки VCL.

*Sender – это указатель на объект - «отправитель» вызова.

Имя потока cout используется в этой программе для вывода в файл.

Свойство Position определяет положение ползунка в объекте ScrollBar1:

ScrollBar1->Position = jpolz;

здесь jpolz – это целая переменная с диапазоном изменения от 1 до 100.

При запуске программы первым выполнится конструктор, т.е. функция

TForm1 :: TForm1( …..) , т.к. он связан с главной формой. Конструктор выведет

в окна Edit1, Edit2 указанные тексты ( свойство Text), которые заменят

те тексты, которые были в этих окнах при проектировании.

После нажатия кнопки появится небольшое окно-сообщение ShowMessage

с именем проекта в верхней части, словом "Gratis!" ниже и с кнопкой ОК.

Нажав OK, получим следующее сообщение от программы. Если подключение файла myz1.txt произойдет нормально, то следующим сообщением будет окно с заголовком

From Вutton1Click”. В нём появятся два числа nend, secDelay и кнопка ОК.

Значения nend, secDelay определяют количество шагов ползунка для отображения на линейке и время задержки для каждого его положения.

Далее нажать ОК и на экране в полосе прокрутки будет двигаться ползунок вправо. В его конечном положении текст в окнах Edit1, Edit2 изменится.

Используя свойства Font кнопок и окон, можно изменить вид

всех выводимых на экран текстов.

Перейдём к заключительным операторам программы, в которых используется

свойство Canvas. Этим свойством обладают многие компоненты, например, TForm, TImage, TPaintBox, и оно соответствует поверхности (канве, холсту) для рисования

на ней. Рисовать можно пером (Pen) или кистью (Brush). Это сложное свойство,

которое само обладает рядом свойств. Обращение к конкретным свойствам

требует использования указателя на указатель, т.е. двух или более стрелок.

Примерами такого обращения являются операторы установки цветов пера и кисти

Form1-> Canvas->Pen->Color = clBlack; Canvas->Brush->Color = clRed;

Здесь выбраны черный и красный цвета. Следует обратить внимание, что имя объекта

Form1 ( это основная форма) можно здесь опускать.

Метод Ellipse( . . .) позволяет нарисовать эллипс с указанными координатами в пикселах. Контур эллипса рисуется пером выбранного цвета, а закрашивается кистью.

В классе ТCanvas есть много других методов для получения графических изображений, например, Draw, LineTo, MoveTo, Pie, Rectangle, TextOut.

Для получения помощи в системе нужно указать слово или объект

и нажать клавишу F1. Для указания нужного окна можно использовать клавишу TAB.

Исполняемый exe-файл, полученный после завершения работы,

- это Windows-приложение, и его можно переносить на любые ПК без системы Builder.

В заключение этого раздела ещё несколько слов о функции sleep.

Эта стандартная функция реализует задержку в сек. Для миллисекунд аналогичная функция имеет имя delay. Обе функции в Builder C++ считаются устаревшими ( англ. obsolete ) и выбраны здесь для упрощения программы. В системе Builder для интервалов времени используется класс TTimer из раздела System палитры компонентов. Здесь его рассматривать не будем, но рекомендую вам попытаться самостоятельно модернизировать рассмотренную программу с применением компонента Timer. Этот таймер, если он включён, отсчитывает время независимо от логики приложения и процессов в ОС.

19.2 О выполнении лабораторной работы 5

Задание: разработать Windows-приложение для своей задачи.

Порядок выполнения лабораторной работы приводится в методических указаниях

и здесь кратко рассмотрим только основные этапы.

Пусть есть программа на С++, состоящая только из операторов #include и функции

main.

Начнем с разработки интерфейса пользователя, т.е. с создания формы с объектами на ней. Пусть программа будет запускаться кнопкой, а ввод-вывод осуществляться в окна Edit.

1. Запустить Builder. Появится главная форма Form1.

Это уже готовый к доработке проект и его нужно предварительно сохранить.

2. Сделать заголовком формы свою фамилию. Для этого в Инспекторе объектов

ввести свою фамилию в поле Caption для формы Form1.

3. Создать объект “стандартная кнопка” на форме.

Для этого щелкнуть по значку Button на палитре компонентов и затем щелкнуть на форме в том месте, где сразу появится кнопка с надписью Button1.

4. Изменить надпись на кнопке.

5. Создать также окна Edit1, Edit2, …, если в программе будут вводиться или выводиться числа.

Переходим к составлению программы, которая будет работать при нажатии кнопки.

6. Щелкнуть 2 раза по кнопке и сразу появится текст на С++. Это заготовка для функции, которая будет запускаться при нажатии кнопки.

Она имеет заголовок

Соседние файлы в папке Лекции