Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методические указания по ПР ПМ0_Копец1.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
5.37 Mб
Скачать

Задание 2

Установите на форму компаненты Panel1, Timer1, Button1. Надпись на кнопке "Старт". Интервал таймера 500 мс.

TTime MyTime;//глобальная переменная void __fastcall TForm1::Button1Click(TObject *Sender) { //Сравниваются две строки

if(CompareStr(Button1->Caption,"Старт")==0) { MyTime = StrToTime("00:00"); Timer1->Enabled = true; Button1->Caption = "Стоп"; }

else { if(CompareStr(Button1->Caption,"Стоп")==0) { Timer1->Enabled = false; Button1->Caption = "Старт"; }; } }

void __fastcall TForm1::Timer1Timer(TObject *Sender) { TTime IncrementTime; IncrementTime = StrToTime("00:01"); MyTime = MyTime + IncrementTime; Panel1->Caption = TimeToStr(MyTime); }

Задание 3

Cоздадим бегущую строку. Определим строку, которую будем использовать в качестве бегущей, как глобальную переменную типа AnsiString.

Описать глобальную переменную нужно в заголовочном модуле формы (с расширением «.h»), а определить – в основном модуле формы (имеющим расширение «.cpp»).

Чтобы быстро открыть заголовочный модуль можно использовать сочетание клави Ctrl+F6.

Для описания глобальной переменной типа AnsiString нужно в заголовочный модуль (файл Name.h) дописать: extern AnsiString Str;

Для определения - в основном модуле (файл Name.cpp) вне функций написать:

AnsiString Str=”Это пример бегущей строки……….”;

Строка будет располагаться в окне редактирования Edit. Чтобы сделать строку бегущей, надо использовать таймер. Для этого на форме надо разместить компонент Timer и задать его свойства Interval = 100 Enabled = true.

В обработчик события OnTimer вставить операторы, осуществляющие циклический сдвиг строки:

void __fastcall TForm1::Timer1Timer (TObject *Sender)

{ Edit1->Clear();

if (!Str.IsEmpty())// Если строка не пуста

{ Edit1->Text = Str;

char first = Str[1];

for (int i=1; i < Str.Length(); i++) //Циклический сдвиг строки

Str[i] = Str[i+1]; //на один символ влево Str[Str.Length()] = first;} }

Теперь каждый раз по истечении 100 миллисекунд (0,1 сек) строка в окне редактирования Edit будет циклически сдвигаться влево, т.е. это будет бегущая строка.

Задание 4

Поместим на форму MyForm компоненты MyTimer, EditTimer, UpDownTime - связанный с компонентом EditTimer, LabelTime, Label1 - Caption = «Установка таймера», расположите его рядом с EditTimer, Label2 - Caption = «Текущее время», расположите его рядом с LableTime, MyProgressBar - отображает ход таймера, ButtonStart - для запуска таймера после его установки.

По истечению заданного времени появляется сообщение «Время вышло!». TMyForm *MyForm;

TProgressBar *MyProgressBar;

void__fastcall TMyForm::TMyForm(TComponent* Owner): Form(Owner)

{

MyProgressBar->Visible = false //до запуска таймера индикатор невидим

MyTimer->Enabled = false; //таймер еще не запущен

}

void __fastcall TMyForm::ButtonStartClick(TObject *Sender)

{

MyTimer->Enabled = true; //запуск таймера

MyProgressBar->Position = 0; //текущая позиция индикатора обнуляется

MyProgressBar->Max = UpDownTime->Position; //макс. Граница индикатора //соответствует заданному пользователем числу в EditTimer

MyProgressBar->Visible = true; //индикатор становится видимым

}

void __fastcall TMyForm::MyTimerTimer(TObject *Sender)

{

//отображение текущего времени в период работы таймера

LabelTime->Caption = Time().FormatString("tt");

//если текущая позиция индикатора меньше максимального значения

if(MyProgressBar->Position < MyProgressBar->Max)

{ MyProgressBar->Position++; //увеличиваем текущую позицию

if ((MyTimer->Enabled) & (StrToInt(EditTimer->Text)!=0))

//если таймер запущен и установлено его значение

EditTimer->Text=IntToStr(StrToInt(EditTimer->Text)-1);}//уменьшение времени

else //если время истекло

{ MyProgressBar->Visible =false;

MyTimer->Enabled = false;

ShowMessage("Время вышло!"); // вывод сообщения

LabelTime->Caption = "";} }

Контрольные вопросы

  1. Для чего предназначен компонент Timer?

  2. Назовите основные свойства компонента Timer.

  3. Когда свойство компонента Timer Enabled устанавливается в true?

  4. В каких случаях испольхуется компонент Timer?

Практическая работа №16

Тема: «Применение панелей общего назначения в интерфейсе пользователя».

Цель работы: Научиться использовать панели общего назначения в приложениях C++ Builder.

Время выполнения: подготовка – 5 мин; выполнение – 165 мин.; проверка – 10 мин; всего – 180 мин.

Описание практической работы