Читайте также: |
|
uses main, Section, Tabl_1, Tabl_2, Tabl_3, Tabl_4, Tabl_5,
Tabl_6, Tabl_7, Tabl_8, Tabl_9, PrnGridUnit, Programm, ShellAPI;
{***** При изменении размеров формы ****}
procedure TForm4.FormResize(Sender: TObject);
Begin
Panel1.Width:= Form4.Width - 100;
Panel1.Height:= Form4.Height - 150;
Panel1.Top:= ActionMainMenuBar1.Height + ActionMainMenuBar2.Height + 43;
Label6.Top:= ActionMainMenuBar1.Height + ActionMainMenuBar2.Height + 13;
Edit1.Top:= ActionMainMenuBar1.Height + ActionMainMenuBar2.Height + 13;
StringGrid1.Width:= Panel1.Width;
StringGrid1.Height:= Panel1.Height;
StringGrid1.ColWidths[0]:= Trunc(StringGrid1.Width * 0.60);
StringGrid1.ColWidths[1]:= Trunc(StringGrid1.Width * 0.10);
StringGrid1.ColWidths[2]:= StringGrid1.ColWidths[1];
StringGrid1.ColWidths[3]:= StringGrid1.ColWidths[1];
end;
{**** Появление формы ****}
procedure TForm4.FormCreate(Sender: TObject);
Var
i, j: Byte;
Begin
// При изменении размеров формы
Panel1.Width:= Form4.Width - 100;
Panel1.Height:= Form4.Height - 150;
Panel1.Top:= ActionMainMenuBar1.Height + ActionMainMenuBar2.Height + 43;
Label6.Top:= ActionMainMenuBar1.Height + ActionMainMenuBar2.Height + 13;
Edit1.Top:= ActionMainMenuBar1.Height + ActionMainMenuBar2.Height + 13;
StringGrid1.Width:= Panel1.Width;
StringGrid1.Height:= Panel1.Height;
StringGrid1.ColWidths[0]:= Trunc(StringGrid1.Width * 0.60);
StringGrid1.ColWidths[1]:= Trunc(StringGrid1.Width * 0.10);
StringGrid1.ColWidths[2]:= StringGrid1.ColWidths[1];
StringGrid1.ColWidths[3]:= StringGrid1.ColWidths[1];
Shapka; // заполняем шапку таблицы
end;
{***** Проверка таблицы, едита и равенство АКТИВ = ПАССИВУ *****}
procedure TForm4.Proverka;
Var
i, j, m, a, b, k, g: Byte;
ch: Double;
Begin
prov:= True; // начальное значение prov - разрешаем выполнять алгоритм
{===== ПРОВЕРКА ТАБЛИЦЫ И ЕДИТА (едит в проверке #7) ====}
for i:= 1 to 3 do // всего 3 года
Begin
{____ выполнять проверку для алгоритма #1 ____}
if knop = 1 then
for m:= 1 to 13 do // всего 13 "отрезков" нужных для данного алгоритма заполнений в таблице
Begin
// a - первая строка, b - последняя строка
if m = 1 then begin a:= 4; b:= 7; end;
if m = 2 then begin a:= 9; b:= 11; end;
if m = 3 then begin a:= 13; b:= 14; end;
if m = 4 then begin a:= 16; b:= 20; end;
if m = 5 then begin a:= 23; b:= 27; end;
if m = 6 then begin a:= 30; b:= 36; end;
if m = 7 then begin a:= 38; b:= 40; end;
if m = 8 then begin a:= 42; b:= 44; end;
if m = 9 then begin a:= 47; b:= 48; end;
if m = 10 then begin a:= 50; b:= 51; end;
if m = 11 then begin a:= 55; b:= 57; end;
if m = 12 then begin a:= 60; b:= 61; end;
if m = 13 then begin a:= 63; b:= 72; end;
for j:= a to b do // строчки
Begin
// чтобы не была ячейка пустой
if (StringGrid1.Cells[i, j] = '') then
Begin
ShowMessage('Обнаружена пустая ячейка');
StringGrid1.TopRow:= j; // перемещаем Scrollbar автоматически на строчку с этой ячейкой
StringGrid1.Col:= i; // столбец
StringGrid1.Row:= j; // строка
StringGrid1.SetFocus; // устанавливаем фокус в эту ячейку
prov:= False; // не разрешаем выполнять алгоритм
Exit; // выходим из процедуры проверки
end;
// чтобы в ячейке было число, а не что-то другое
if not Trystrtofloat(StringGrid1.Cells[i, j], ch) then
Begin
ShowMessage('Обнаружена некорректно заполненная ячейка');
StringGrid1.TopRow:= j; // перемещаем Scrollbar автоматически на строчку с этой ячейкой
StringGrid1.Col:= i; // столбец
StringGrid1.Row:= j; // строка
StringGrid1.SetFocus; // устанавливаем фокус в эту ячейку
prov:= False; // не разрешаем выполнять алгоритм
Exit; // выходим из процедуры проверки
end;
end;
end;
{____ выполнять проверку для алгоритма #2 ____}
if knop = 2 then
for m:= 1 to 10 do // всего 10 "отрезков" нужных для данного алгоритма заполнений в таблице
Begin
// a - первая строка, b - последняя строка
if m = 1 then begin a:= 4; b:= 7; end;
if m = 2 then begin a:= 9; b:= 11; end;
if m = 3 then begin a:= 13; b:= 14; end;
if m = 4 then begin a:= 16; b:= 20; end;
if m = 5 then begin a:= 23; b:= 27; end;
if m = 6 then begin a:= 30; b:= 36; end;
if m = 7 then begin a:= 38; b:= 40; end;
if m = 8 then begin a:= 42; b:= 44; end;
if m = 9 then begin a:= 68; b:= 68; end;
if m = 10 then begin a:= 71; b:= 72; end;
for j:= a to b do // строчки
Begin
// чтобы не была ячейка пустой
if (StringGrid1.Cells[i, j] = '') then
Begin
ShowMessage('Обнаружена пустая ячейка');
StringGrid1.TopRow:= j; // перемещаем Scrollbar автоматически на строчку с этой ячейкой
StringGrid1.Col:= i; // столбец
StringGrid1.Row:= j; // строка
StringGrid1.SetFocus; // устанавливаем фокус в эту ячейку
prov:= False; // не разрешаем выполнять алгоритм
Exit; // выходим из процедуры проверки
end;
// чтобы в ячейке было число, а не что-то другое
if not Trystrtofloat(StringGrid1.Cells[i, j], ch) then
Begin
ShowMessage('Обнаружена некорректно заполненная ячейка');
StringGrid1.TopRow:= j; // перемещаем Scrollbar автоматически на строчку с этой ячейкой
StringGrid1.Col:= i; // столбец
StringGrid1.Row:= j; // строка
StringGrid1.SetFocus; // устанавливаем фокус в эту ячейку
prov:= False; // не разрешаем выполнять алгоритм
Exit; // выходим из процедуры проверки
end;
end;
end;
{____ выполнять проверку для алгоритма #3 ____}
if knop = 3 then
for m:= 1 to 15 do // всего 15 "отрезков" нужных для данного алгоритма заполнений в таблице
Begin
// a - первая строка, b - последняя строка
if m = 1 then begin a:= 4; b:= 7; end;
if m = 2 then begin a:= 9; b:= 11; end;
if m = 3 then begin a:= 13; b:= 14; end;
if m = 4 then begin a:= 16; b:= 20; end;
if m = 5 then begin a:= 23; b:= 27; end;
if m = 6 then begin a:= 30; b:= 36; end;
if m = 7 then begin a:= 38; b:= 40; end;
if m = 8 then begin a:= 42; b:= 44; end;
if m = 9 then begin a:= 47; b:= 48; end;
if m = 10 then begin a:= 50; b:= 51; end;
if m = 11 then begin a:= 55; b:= 57; end;
if m = 12 then begin a:= 60; b:= 61; end;
if m = 13 then begin a:= 63; b:= 72; end;
if m = 14 then begin a:= 78; b:= 79; end;
if m = 15 then begin a:= 83; b:= 83; end;
for j:= a to b do // строчки
Begin
// чтобы не была ячейка пустой
if (StringGrid1.Cells[i, j] = '') then
Begin
ShowMessage('Обнаружена пустая ячейка');
StringGrid1.TopRow:= j; // перемещаем Scrollbar автоматически на строчку с этой ячейкой
StringGrid1.Col:= i; // столбец
StringGrid1.Row:= j; // строка
StringGrid1.SetFocus; // устанавливаем фокус в эту ячейку
prov:= False; // не разрешаем выполнять алгоритм
Exit; // выходим из процедуры проверки
end;
// чтобы в ячейке было число, а не что-то другое
if not Trystrtofloat(StringGrid1.Cells[i, j], ch) then
Begin
ShowMessage('Обнаружена некорректно заполненная ячейка');
StringGrid1.TopRow:= j; // перемещаем Scrollbar автоматически на строчку с этой ячейкой
StringGrid1.Col:= i; // столбец
StringGrid1.Row:= j; // строка
StringGrid1.SetFocus; // устанавливаем фокус в эту ячейку
prov:= False; // не разрешаем выполнять алгоритм
Exit; // выходим из процедуры проверки
end;
end;
end;
{____ выполнять проверку для алгоритма #4 ____}
if knop = 4 then
for m:= 1 to 15 do // всего 15 "отрезков" нужных для данного алгоритма заполнений в таблице
Begin
// a - первая строка, b - последняя строка
if m = 1 then begin a:= 4; b:= 7; end;
if m = 2 then begin a:= 9; b:= 11; end;
if m = 3 then begin a:= 13; b:= 14; end;
if m = 4 then begin a:= 16; b:= 20; end;
if m = 5 then begin a:= 23; b:= 27; end;
if m = 6 then begin a:= 30; b:= 36; end;
if m = 7 then begin a:= 38; b:= 40; end;
if m = 8 then begin a:= 42; b:= 44; end;
if m = 9 then begin a:= 47; b:= 48; end;
if m = 10 then begin a:= 50; b:= 51; end;
if m = 11 then begin a:= 55; b:= 57; end;
if m = 12 then begin a:= 60; b:= 61; end;
if m = 13 then begin a:= 63; b:= 72; end;
if m = 14 then begin a:= 83; b:= 84; end;
if m = 15 then begin a:= 87; b:= 87; end;
for j:= a to b do // строчки
Begin
// чтобы не была ячейка пустой
if (StringGrid1.Cells[i, j] = '') then
Begin
ShowMessage('Обнаружена пустая ячейка');
StringGrid1.TopRow:= j; // перемещаем Scrollbar автоматически на строчку с этой ячейкой
StringGrid1.Col:= i; // столбец
StringGrid1.Row:= j; // строка
StringGrid1.SetFocus; // устанавливаем фокус в эту ячейку
prov:= False; // не разрешаем выполнять алгоритм
Exit; // выходим из процедуры проверки
end;
// чтобы в ячейке было число, а не что-то другое
if not Trystrtofloat(StringGrid1.Cells[i, j], ch) then
Begin
ShowMessage('Обнаружена некорректно заполненная ячейка');
StringGrid1.TopRow:= j; // перемещаем Scrollbar автоматически на строчку с этой ячейкой
StringGrid1.Col:= i; // столбец
StringGrid1.Row:= j; // строка
StringGrid1.SetFocus; // устанавливаем фокус в эту ячейку
prov:= False; // не разрешаем выполнять алгоритм
Exit; // выходим из процедуры проверки
end;
end;
end;
{____ выполнять проверку для алгоритма #5 ____}
if knop = 5 then
for m:= 1 to 12 do // всего 12 "отрезков" нужных для данного алгоритма заполнений в таблице
Begin
// a - первая строка, b - последняя строка
if m = 1 then begin a:= 4; b:= 7; end;
if m = 2 then begin a:= 9; b:= 11; end;
if m = 3 then begin a:= 13; b:= 14; end;
if m = 4 then begin a:= 16; b:= 20; end;
if m = 5 then begin a:= 23; b:= 27; end;
if m = 6 then begin a:= 30; b:= 36; end;
if m = 7 then begin a:= 38; b:= 40; end;
if m = 8 then begin a:= 42; b:= 44; end;
if m = 9 then begin a:= 83; b:= 84; end;
if m = 10 then begin a:= 86; b:= 87; end;
if m = 11 then begin a:= 89; b:= 93; end;
if m = 12 then begin a:= 95; b:= 95; end;
for j:= a to b do // строчки
Begin
// чтобы не была ячейка пустой
if (StringGrid1.Cells[i, j] = '') then
Begin
ShowMessage('Обнаружена пустая ячейка');
StringGrid1.TopRow:= j; // перемещаем Scrollbar автоматически на строчку с этой ячейкой
StringGrid1.Col:= i; // столбец
StringGrid1.Row:= j; // строка
StringGrid1.SetFocus; // устанавливаем фокус в эту ячейку
prov:= False; // не разрешаем выполнять алгоритм
Exit; // выходим из процедуры проверки
end;
// чтобы в ячейке было число, а не что-то другое
if not Trystrtofloat(StringGrid1.Cells[i, j], ch) then
Begin
ShowMessage('Обнаружена некорректно заполненная ячейка');
StringGrid1.TopRow:= j; // перемещаем Scrollbar автоматически на строчку с этой ячейкой
StringGrid1.Col:= i; // столбец
StringGrid1.Row:= j; // строка
StringGrid1.SetFocus; // устанавливаем фокус в эту ячейку
prov:= False; // не разрешаем выполнять алгоритм
Exit; // выходим из процедуры проверки
end;
end;
end;
{____ выполнять проверку для алгоритма #6 ____}
if knop = 6 then
for m:= 1 to 16 do // всего 16 "отрезков" нужных для данного алгоритма заполнений в таблице
Begin
// a - первая строка, b - последняя строка
if m = 1 then begin a:= 4; b:= 7; end;
if m = 2 then begin a:= 9; b:= 11; end;
if m = 3 then begin a:= 13; b:= 14; end;
if m = 4 then begin a:= 16; b:= 20; end;
if m = 5 then begin a:= 23; b:= 27; end;
if m = 6 then begin a:= 30; b:= 36; end;
if m = 7 then begin a:= 38; b:= 40; end;
if m = 8 then begin a:= 42; b:= 44; end;
if m = 9 then begin a:= 47; b:= 48; end;
if m = 10 then begin a:= 50; b:= 51; end;
if m = 11 then begin a:= 55; b:= 57; end;
if m = 12 then begin a:= 60; b:= 61; end;
if m = 13 then begin a:= 63; b:= 72; end;
if m = 14 then begin a:= 80; b:= 80; end;
if m = 15 then begin a:= 83; b:= 84; end;
if m = 16 then begin a:= 86; b:= 87; end;
for j:= a to b do // строчки
Begin
// чтобы не была ячейка пустой
if (StringGrid1.Cells[i, j] = '') then
Begin
ShowMessage('Обнаружена пустая ячейка');
StringGrid1.TopRow:= j; // перемещаем Scrollbar автоматически на строчку с этой ячейкой
StringGrid1.Col:= i; // столбец
StringGrid1.Row:= j; // строка
StringGrid1.SetFocus; // устанавливаем фокус в эту ячейку
prov:= False; // не разрешаем выполнять алгоритм
Exit; // выходим из процедуры проверки
end;
// чтобы в ячейке было число, а не что-то другое
if not Trystrtofloat(StringGrid1.Cells[i, j], ch) then
Begin
ShowMessage('Обнаружена некорректно заполненная ячейка');
StringGrid1.TopRow:= j; // перемещаем Scrollbar автоматически на строчку с этой ячейкой
StringGrid1.Col:= i; // столбец
StringGrid1.Row:= j; // строка
StringGrid1.SetFocus; // устанавливаем фокус в эту ячейку
prov:= False; // не разрешаем выполнять алгоритм
Exit; // выходим из процедуры проверки
end;
end;
end;
{____ выполнять проверку для алгоритма #7 ____}
if knop = 7 then
for m:= 1 to 17 do // всего 17 "отрезков" нужных для данного алгоритма заполнений в таблице
Begin
// a - первая строка, b - последняя строка
if m = 1 then begin a:= 4; b:= 7; end;
if m = 2 then begin a:= 9; b:= 11; end;
if m = 3 then begin a:= 13; b:= 14; end;
if m = 4 then begin a:= 16; b:= 20; end;
if m = 5 then begin a:= 23; b:= 27; end;
if m = 6 then begin a:= 30; b:= 36; end;
if m = 7 then begin a:= 38; b:= 40; end;
if m = 8 then begin a:= 42; b:= 44; end;
if m = 9 then begin a:= 47; b:= 48; end;
if m = 10 then begin a:= 50; b:= 51; end;
if m = 11 then begin a:= 55; b:= 57; end;
if m = 12 then begin a:= 60; b:= 61; end;
if m = 13 then begin a:= 63; b:= 72; end;
if m = 14 then begin a:= 76; b:= 77; end;
if m = 15 then begin a:= 83; b:= 83; end;
if m = 16 then begin a:= 89; b:= 89; end;
if m = 17 then begin a:= 91; b:= 92; end;
for j:= a to b do // строчки
Begin
// чтобы не была ячейка пустой
if (StringGrid1.Cells[i, j] = '') then
Begin
ShowMessage('Обнаружена пустая ячейка');
StringGrid1.TopRow:= j; // перемещаем Scrollbar автоматически на строчку с этой ячейкой
StringGrid1.Col:= i; // столбец
StringGrid1.Row:= j; // строка
StringGrid1.SetFocus; // устанавливаем фокус в эту ячейку
prov:= False; // не разрешаем выполнять алгоритм
Exit; // выходим из процедуры проверки
end;
// чтобы в ячейке было число, а не что-то другое
if not Trystrtofloat(StringGrid1.Cells[i, j], ch) then
Begin
ShowMessage('Обнаружена некорректно заполненная ячейка');
StringGrid1.TopRow:= j; // перемещаем Scrollbar автоматически на строчку с этой ячейкой
StringGrid1.Col:= i; // столбец
StringGrid1.Row:= j; // строка
StringGrid1.SetFocus; // устанавливаем фокус в эту ячейку
prov:= False; // не разрешаем выполнять алгоритм
Exit; // выходим из процедуры проверки
end;
end;
// Проверка для Edit
// чтобы не была ячейка пустой
if (Edit1.Text = '') then
Begin
ShowMessage('Обнаружено пустое поле ввода');
Edit1.SetFocus; // устанавливаем фокус в этот едит
prov:= False; // не разрешаем выполнять алгоритм
Exit; // выходим из процедуры проверки
end;
// чтобы в ячейке было число, а не что-то другое
if not Trystrtofloat(Edit1.Text, ch) then
Begin
ShowMessage('Обнаружено некорректно заполненное поле ввода');
Edit1.SetFocus; // устанавливаем фокус в этот едит
prov:= False; // не разрешаем выполнять алгоритм
Exit; // выходим из процедуры проверки
end;
end;
{____ выполнять проверку для алгоритма #8 ____}
if knop = 8 then
for m:= 1 to 18 do // всего 18 "отрезков" нужных для данного алгоритма заполнений в таблице
Begin
// a - первая строка, b - последняя строка
if m = 1 then begin a:= 4; b:= 7; end;
if m = 2 then begin a:= 9; b:= 11; end;
if m = 3 then begin a:= 13; b:= 14; end;
if m = 4 then begin a:= 16; b:= 20; end;
if m = 5 then begin a:= 23; b:= 27; end;
if m = 6 then begin a:= 30; b:= 36; end;
if m = 7 then begin a:= 38; b:= 40; end;
if m = 8 then begin a:= 42; b:= 44; end;
if m = 9 then begin a:= 47; b:= 48; end;
if m = 10 then begin a:= 50; b:= 51; end;
if m = 11 then begin a:= 55; b:= 57; end;
if m = 12 then begin a:= 60; b:= 61; end;
if m = 13 then begin a:= 63; b:= 72; end;
if m = 14 then begin a:= 74; b:= 77; end;
if m = 15 then begin a:= 79; b:= 79; end;
if m = 16 then begin a:= 83; b:= 84; end;
if m = 17 then begin a:= 86; b:= 87; end;
if m = 18 then begin a:= 89; b:= 93; end;
if m = 18 then begin a:= 95; b:= 95; end;
for j:= a to b do // строчки
Begin
// чтобы не была ячейка пустой
if (StringGrid1.Cells[i, j] = '') then
Begin
ShowMessage('Обнаружена пустая ячейка');
StringGrid1.TopRow:= j; // перемещаем Scrollbar автоматически на строчку с этой ячейкой
StringGrid1.Col:= i; // столбец
StringGrid1.Row:= j; // строка
StringGrid1.SetFocus; // устанавливаем фокус в эту ячейку
prov:= False; // не разрешаем выполнять алгоритм
Exit; // выходим из процедуры проверки
end;
// чтобы в ячейке было число, а не что-то другое
if not Trystrtofloat(StringGrid1.Cells[i, j], ch) then
Begin
ShowMessage('Обнаружена некорректно заполненная ячейка');
StringGrid1.TopRow:= j; // перемещаем Scrollbar автоматически на строчку с этой ячейкой
StringGrid1.Col:= i; // столбец
StringGrid1.Row:= j; // строка
StringGrid1.SetFocus; // устанавливаем фокус в эту ячейку
prov:= False; // не разрешаем выполнять алгоритм
Exit; // выходим из процедуры проверки
end;
end;
end;
{____ выполнять проверку для алгоритма #9 ____}
if knop = 9 then
for m:= 1 to 17 do // всего 17 "отрезков" нужных для данного алгоритма заполнений в таблице
Begin
// a - первая строка, b - последняя строка
Дата добавления: 2015-10-13; просмотров: 80 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Interface | | | Implementation 2 страница |