Компонент RadioButton
Переключатели с зависимой фиксацией – компонент RadioButton, также называется кнопкой выбора. Данный компонент представляет собой надпись с кругом слева, в который можно поставить точку. Обычно кнопки выбора располагаются по отдельным группам. Выбор переключателя является взаимоисключающим, т.е. при выборе одного переключателя все остальные сбрасываются (становятся невыбранными). Для формирования групп переключателей используются такие компоненты как форма Form, панельPanel, группа GroupBox и специализированный контейнер RadioGroup.
Для того, чтобы объединить переключатели в группу, достаточно положить их на соответствующий компонент. При использовании компонента RadioGroup этого делать не нужно, чтобы добавить или удалить элемент, необходимо использовать свойство Items типа TStrings в Инспекторе объектов или программно. Данное свойство содержит строки, которые отображаются как названия переключателя. Обращение в программе к конкретному элементу доступно через свойство ItemIndex типа Integer, нумерация которого начинается с нуля. Рекомендуется установить начальные значения для данного компонента, например, выбрав нужный переключатель в методе формы onShow, иначе ни один из переключателей не будет выбран до того, как пользователь не установит его, а свойство ItemIndex будет равно -1.
Для управления количеством столбцов используется свойство Columns, имеющее по умолчанию значение 1.
Пример 16. Рассчитать значения функции на интервале [а,b] с шагом h. В зависимости от выбора пользователя, результаты расчета поместить в таблицу, нарисовать график или записать в файл. (продолжение примера 15)
Преобразуйте форму, разработанную для примера 15 в форму, представленную на рисунке 33 (под компонентом Chart находится компонент StringGrid).
Рисунок 33 - Внешний вид приложения
В начале работы приложения на форме не должно быть видно окно результатов расчета (ни график, ни таблица) и выбрана первая позиция в компоненте RadioGroup, поэтому добавим метод формы OnShow следующим кодом:
procedure TForm1.FormShow(Sender: TObject);
begin
// начало такое же, как и в примере 15
Form1.StringGrid1.Visible:=false;
Form1.Chart1.Visible:=false;
Form1.RadioGroup1.ItemIndex:=0;
end;
Программа расчета с учетом всех обновлений выглядит так:
procedure Clear; // процедура очистки
var
i:integer;
begin
for i:=1 to Form1.StringGrid1.RowCount-1 do
begin
Form1.StringGrid1.Cells[0,i]:='';
Form1.StringGrid1.Cells[1,i]:='';
end;
Form1.Chart1.SeriesList.Series[0].Clear;
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
var
a,b,y:real;
i:integer;
Raschet:TextFile;
begin
a:=StrToFloat(Form1.LabeledEdit1.Text);
b:=StrToFloat(Form1.LabeledEdit2.Text);
if a>=b then
begin
Mr:=MessageDlg('Данные введены неверно.
Ввести заново?', mtConfirmation,
[mbYes, mbNo,mbCancel],0);
if Mr=mrYes then
Form1.FormShow(Sender);
exit;
end;
h:=StrToFloat(InputBox('Ввод шага
расчета','Введите шаг','1'));
Form1.StringGrid1.Cells[0,0]:=' x ';
Form1.StringGrid1.Cells[1,0]:=' y ';
i:=1;
Clear;
case Form1.RadioGroup1.ItemIndex of
0:begin
Form1.StringGrid1.Visible:=true;
Form1.Chart1.Visible:=false;
end;
1:begin
Form1.StringGrid1.Visible:=false;
Form1.Chart1.Visible:=true;
end;
2:begin
Form1.StringGrid1.Visible:=false;
Form1.Chart1.Visible:=false;
if Form1.SaveDialog1.Execute then
begin
AssignFile(Raschet,
Form1.SaveDialog1.FileName);
Rewrite(Raschet);
end;
end;
end;
while a<=b do
begin
y:=a*a;
case Form1.RadioGroup1.ItemIndex of
0:
begin
if i>Form1.StringGrid1.RowCount
then Form1.StringGrid1.RowCount:=
Form1.StringGrid1.RowCount+1;
Form1.StringGrid1.Cells[0,i]:=
FloatToStr(a);
Form1.StringGrid1.Cells[1,i]:=
FloatToStr(y);
end;
1: Form1.Chart1.SeriesList.Series[0].
AddXY(a,y,'',clRed);
2: WriteLn(Raschet,FloatToStr(a)+
' '+FloatToStr(y));
end;
a:=a+h;
inc(i);
end;
if Form1.RadioGroup1.ItemIndex=2
then CloseFile(Raschet);
end;
Дата добавления: 2015-04-10; просмотров: 1326;