
- •Семинар 4
- •Кнопка выбора опции (класс tCheckBox).
- •Радиокнопка (класс tRadioBotton).
- •Список (класс tListBox).
- •Interface
- •V : tVector;
- •Implementation
- •I, p : Integer;
- •I : Integer; //параметр цикла, индекс
- •Val ( StrN,n,Code );
- •Val (StrI, V[I], Code);
- •I , j : Integer;
- •Val ( StrRow, SizeRow, Code);
- •Val ( StrColumn, SizeColumn, Code );
- •Val ( StrJ,a[I,j],Code);
- •I : Integer;
- •I, j, t : Integer;
- •1.Ввод массива StringGrid
- •2.Пример2 Электронная таблица
I : Integer; //параметр цикла, индекс
Code : Integer; //код ошибки
StrN, StrI : String [10];
Kol : Integer;
Begin
StrN : =edtSizeVector.Text;
Val ( StrN,n,Code );
if ( Code <> 0 ) or ( N > MaxSizeVector) then
begin
MessageDlg ( StrN+' - Ошибка в задании размера вектора',
mtError, [mbOk], 0);
edtSizeVector.SetFocus;
end
else
begin
edtVector.Text := edtVector.Text +' ';
Kol := 0;
for i := 1 to Length ( edtVector.Text )-1 do
if ( edtVector.Text[i]=' ') and ( edtVector.Text[i+1] <>' ') then Kol:=Kol+1;
if edtVector.Text[1] <>' ' then Kol := Kol+1;
if Kol < N then
begin
MessageDlg ('Число элементов вектора меньше '+#13+
'заданного размера вектора', mtError, [mbOk], 0);
edtVector.SetFocus;
Exit;
end;
if Kol > N then
begin
MessageDlg ('Число элементов вектора больше '+#13+
'заданного размера вектора', mtError, [mbOk], 0);
edtVector.SetFocus;
exit;
end;
for i := 1 to N do
begin
StrI := SelectNumber (edtVector.Text, i);
Val (StrI, V[I], Code);
if Code <> 0 then
begin
MessageDlg ( StrI+' - неправильное целое число',
mtError, [mbOk], 0);
edtVector.SetFocus;
exit
end
end;
MessageDlg ('Количество введенных элементов равно ' +StrN,
mtInformation, [mbOk], 0);
btnVectorWork.Enabled := True;
end;
End;
Обработчик события “нажатие на кнопку “Ввод матрицы” обеспечивает ввод и контроль размеров матрицы из полей Edit и ввод из поля Memo самих элементов матрицы. Обработчик использует функцию SelectNumber и метод SetFocus, обеспечивающий позиционирование курсора в соответствующие поля редактирования. Функция Trim предварительно удаляет лидирующие и хвостовые пробелы из строки текста. Свойство Enabled запрещает использование кнопки “Транспонирование матрицы “ до ее ввода:
procedure TForm1.btnMatrixClick(Sender: TObject);
var
I , j : Integer;
StrRow, StrColumn : string[5];
Code : Integer;
Stroka, StrJ : string;
Begin
StrRow := edtSizeRow.Text;
Val ( StrRow, SizeRow, Code);
if ( Code <> 0 ) or ( SizeRow > MaxSizeRow ) then
begin
MessageDlg (' '+StrRow+#13+' Ошибка в задании'+
#13+'числа строк матрицы', mtError, [mbOK], 0);
edtSizeRow.SetFocus;
exit;
end;
StrColumn := edtSizeColumn.Text;
Val ( StrColumn, SizeColumn, Code );
if ( Code <> 0) or ( SizeColumn > MaxSizeColumn) then
begin
MessageDlg ( StrColumn+#13+'Ошибка в задании числа столбцов',
mtError, [mbOK], 0);
edtSizeColumn.SetFocus;
exit;
end;
if memoMatrix.Lines.Count < SizeRow then
begin
MessageDlg ( StrRow+#13+'Число строк матрицы меньше заданного',
mtError, [mbOK], 0);
edtSizeRow.SetFocus;
exit;
end;
while ( memoMatrix.Lines.Count <> 0) and
( Trim ( memoMatrix.Lines[memoMatrix.Lines.Count - 1]) = '') do
memoMatrix.Lines.Delete(memoMatrix.Lines.Count - 1);
if memoMatrix.Lines.Count > SizeRow then
begin
MessageDlg ( StrRow+#13+'Число строк матрицы больше заданного',
mtError, [mbOK], 0);
edtSizeRow.SetFocus;
exit;
end;
for i := 0 to SizeRow-1 do
begin
Stroka := memoMatrix.Lines[i] + ' ';
for j := 0 to SizeColumn-1 do
begin
StrJ := SelectNumber ( Stroka,j+1);