Свойства компонента SpeedButton
Свойство | Описание |
Name | Имя компонента. Используется для доступа к компоненту и его свойствам |
Glyph | Битовый образ, в котором находятся картинки для каждого из состояний кнопки. В битовом образе может быть до четырех изображений кнопки (рис. П1.15) |
NumGlyphs | Количество картинок в битовом образе Glyph |
Flat | Свойство Flat определяет вид кнопки (наличие границы). Если значение свойства равно true, то граница кнопки появляется только при позиционировании указателя мыши на кнопке |
Group Index | Идентификатор группы кнопок. Кнопки, имеющие одинаковый идентификатор группы, работают подобно радиокнопкам: нажатие одной из кнопок группы вызывает срабатывание других кнопок этой группы. Чтобы кнопку можно было зафиксировать, значение свойства Grouplndex не должно быть равно нулю |
Down | Идентификатор состояния кнопки. Изменить значение свойства можно, если значение свойства Grouplndex не равно нулю |
AllowAllUp | Свойство определяет возможность отжать кнопку. Если кнопка нажата и значение свойства равно true, то кнопку можно отжать |
ShowHint | Разрешает (true) или запрещает (false) отображение подсказки при позиционировании указателя на кнопке |
Компонент UpDown
Компонент UpDown представляет собой две кнопки, используя которые можно изменить значение внутренней переменной-счетчика на определенную величину. Увеличение или уменьшение значения происходит при каждом щелчке на одной из кнопок.
Описание лабораторной работы
Задание 1
1. Установите на форму компонент — индикатор процесса CGauge,из вкладки компонентов Samples,которыйпозволяет следить визуально за состоянием любого запущенного нами процесса или действия:
2. C помощью свойства — BackColor -> clMoneyGreen, можно задать и настроить предпочтительный цвет для данного компонента Cgauge, вместо стандартного белого - BackColor->clWhite:
3. Добавьте на форму нашего приложения несколько новых компонентов (из вкладки Standard - Label, из вкладки Additional - SpeedBotton) и заполним необходимые их свойства (см. Рис.2).
Рис.2 Размещение компонентов на форме
4. Надписи на кнопках (SpeedBotton) и метках (Label), могут быть любыми и задаются с помощью свойств этих компонентов — Caption, а размер букв и шрифт устанавливается с помощью свойства — Font.
5. Устанавливая для нужных компонентов SpeedBotton свойство GroupIndex в число отличное от нуля (например в единицу) и свойство AllowAllUp в True, получатся кнопки с эффектом нажатия до определенного момента пока снова не будут нажаты, при этом получается эффект противоположный нажатию кнопки. Так как, в нашем случае, кнопки с направлениями движения (Вперед, Назад, Влево, Вправо) имеют одно и тоже значение свойства GroupIndex=1, то при нажатии на любую из кнопок движения предыдущая кнопка возвращается в исходное положение. А вот кнопку с надписью — Стоп, наоборот не будем включать ни в группу кнопок движения, ни изменять выше перечисленные свойства для кнопок. Вот для нее мы опишем действия, которые она должна сделать при однократном нажатии. Для этого в Окне формы нужно два раза левой кнопкой мышки щелкнуть, по кнопке с надписью — Стоп (SpeedButton2), при этом автоматически среда быстрой визуальной разработки фирмы создаст в файле .cpp, обработчик событий при нажатии на кнопку — SpeedButton2Click, который при первом вызове всегда пустой.
6. Отменяем действия кнопок движения переводя их в исходное состояние.
void __fastcall TForm1::SpeedButton2Click(TObject *Sender)
{
if(Form1->SpeedButton4->Down==true)
Form1->SpeedButton4->Down=false;
if(Form1->SpeedButton5->Down==true)
Form1->SpeedButton5->Down=false;
if(Form1->SpeedButton1->Down==true)
Form1->SpeedButton1->Down=false;
if(Form1->SpeedButton3->Down==true)
Form1->SpeedButton3->Down=false;
}
Программный код теперь будет выглядеть следующим образом:
void __fastcall TForm1::SpeedButton2Click(TObject *Sender)
{
if(Form1->SpeedButton4->Down==true)
Form1->SpeedButton4->Down=false;
if(Form1->SpeedButton5->Down==true)
Form1->SpeedButton5->Down=false;
if(Form1->SpeedButton1->Down==true)
Form1->SpeedButton1->Down=false;
if(Form1->SpeedButton3->Down==true)
Form1->SpeedButton3->Down=false;
Label1->Caption="Информация";
}
void __fastcall TForm1::SpeedButton4Click(TObject *Sender)
{
Label1->Caption="Информация";
}
void __fastcall TForm1::SpeedButton5Click(TObject *Sender)
{
Label1->Caption="Информация";
}
void __fastcall TForm1::SpeedButton1Click(TObject *Sender)
{
Label1->Caption="Информация";
}
void __fastcall TForm1::SpeedButton3Click(TObject *Sender)
{
Label1->Caption="Информация";
}
7. Теперь разберемся с последним компонентом - индикатором процесса CGauge, который мы пока не задействовали в нашем приложении. Для наглядности работы данного компонента в обработчик события -SpeedButton2Click, добавим следующее:
void __fastcall TForm1::SpeedButton2Click(TObject *Sender)
{
Form1->CGauge1->MaxValue=100;
Form1->CGauge1->Progress=0;
for(char g=0;g<=100;g++)
{
Form1->CGauge1->Progress=g;
Sleep(25); // Делаем задержку
}
Form1->CGauge1->Progress=0;
}
Задание 2
Ввести три числа - x,y,z. Вычислить по усмотрению u=sin(x), u=cos(x) или u=tg(x). Найти по выбору максимальное из трех чисел: max(u,y,z). Cоздать форму, представленную на рис. 2., и написать соответствующую программу.
Рис. 3
8. Создайте форму, скорректировав текст надписей и положение окон TEdit.
9. Выберите в меню компонентов Standard кмпонент ТCheckBox и поместите его в нужное место формы. С помощью инспектора объектов измените заголовок (Caption) на maxabs. В зависимости от того, нажата или нет кнопка, булева переменная CheckBox1.Checked будет принимать значение true или false.
10. Выберите в меню компонентов Standard пиктограмму и поместите ее в нужное место формы. На форме появится окаймленный линией чистый прямоугольник с заголовком RadioGroup1. Замените заголовок (Caption) на U(x).
Для того, чтобы разместить на компоненте кнопки, необходимо свойство Columns установить равным единице (кнопки размещаются в одном столбце). Дважды щелкните по правой части свойства Items мышью, появится строчный редактор списка заголовков кнопок. Наберите три строки с именами: в первой строке - cos(x), во второй - sin(x), в третьей - tg(x), нажмите ОК.
После этого на форме внутри окаймления появится три кнопки- переключателя с введенными надписями.
Обратите внимание на то, что в тексте программы появится переменная RadioGroup1 типа TRadioGroup. Теперь при нажатии одной из кнопок группы в переменной целого типа RadioGroup1−>ItemIndex будет находиться номер нажатой клавиши (отсчитывается от нуля), что используется в тексте приведенной программы.
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Edit1->Text="0,1";
Edit2->Text="0,356";
Edit3->Text="0";
Memo1->Clear();
Memo1->Lines->Add("Рез-ты ст. гр.920201 Петрова И.И.");
}
//-----------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
double x,y,z,u,ma;
// Ввод исходных данных и вывод в окно Memo1
x=StrToFloat(Edit1->Text);
Memo1->Lines->Add("x="+Edit1->Text);
y=StrToFloat(Edit2->Text);
Memo1->Lines->Add("y="+Edit2->Text);
z=StrToFloat(Edit3->Text);
Memo1->Lines->Add("z="+Edit3-z=StrToFloat(Edit3->Text);
Memo1->Lines->Add("z="+Edit3->Text);
// Проверка номера нажатой кнопки и выбор //соответствующей ей функции
switch(RadioGroup1->ItemIndex)
{
case 0: u=cos(x); break;
case 1: u=sin(x); break;
case 2: u=tan(x); break;
}
if (CheckBox1->Checked) // Проверка состояния //кнопки CheckBox1
{
u=fabs(u);
y=fabs(y);
z=fabs(z);
}
// Нахождение максимального из трех чисел
if (u>y) ma=u; else ma=y;
if (z>ma) ma=z;
if (CheckBox1->Checked) Memo1->Lines->Add("maxabc="+
FloatToStrF(ma,ffFixed,8,6));
else Memo1->Lines->Add("max="+
FloatToStrF(ma,ffFixed,8,6)); }
Задание 3
Отредактируйте вид формы и текст программы в соответствии с полученным заданием. Предусмотрите вывод информации, показывающий, по какой ветви производились вычисления. В качестве f(x) использовать по выбору: x2, x3, ex.