Читайте также: |
|
uses main, Section, small_Tabl_1, small_Tabl_2, Small_Tabl_3, small_Tabl_4,
Programm, PrnGridUnit;
{**** Закрытие формы ****}
procedure TForm3.FormClose(Sender: TObject; var Action: TCloseAction);
Begin
Form1.Close;
end;
{**** При изменении размеров формы ****}
procedure TForm3.FormResize(Sender: TObject);
Begin
// При изменении размеров формы
Panel1.Width:= Form3.Width - 100;
Panel1.Height:= Form3.Height - 150;
// смещаем панель в зависимости от высот ActionMainMenuBar'ов
Panel1.Top:= ActionMainMenuBar1.Height + ActionMainMenuBar2.Height + 43;
// смещаем Label и Edit в зависимости от высот ActionMainMenuBar'ов
Label1.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.41);
StringGrid1.ColWidths[1]:= Trunc(StringGrid1.Width * 0.06);
StringGrid1.ColWidths[2]:= StringGrid1.ColWidths[1];
StringGrid1.ColWidths[3]:= StringGrid1.ColWidths[1];
StringGrid1.ColWidths[4]:= Trunc(StringGrid1.Width * 0.37);
end;
{**** Появление формы ****}
procedure TForm3.FormShow(Sender: TObject);
Var
i, j: Integer;
Begin
// При изменении размеров формы
Panel1.Width:= Form3.Width - 100;
Panel1.Height:= Form3.Height - 150;
// смещаем панель в зависимости от высот ActionMainMenuBar'ов
Panel1.Top:= ActionMainMenuBar1.Height + ActionMainMenuBar2.Height + 43;
// смещаем Label и Edit в зависимости от высот ActionMainMenuBar'ов
Label1.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.41);
StringGrid1.ColWidths[1]:= Trunc(StringGrid1.Width * 0.06);
StringGrid1.ColWidths[2]:= StringGrid1.ColWidths[1];
StringGrid1.ColWidths[3]:= StringGrid1.ColWidths[1];
StringGrid1.ColWidths[4]:= Trunc(StringGrid1.Width * 0.37);
Edit1.SetFocus; // устанавливаем фокус
Shapka; // заполняем шапку таблицы
end;
{**** Шапка таблицы ****}
procedure TForm3.Shapka;
Var
i: Byte;
Begin
// Сама шапка
StringGrid1.Cells[0, 0]:= ' Статьи';
StringGrid1.Cells[1, 0]:= ' На конец отчётного периода';
StringGrid1.Cells[2, 0]:= ' На начало отчётного периода';
StringGrid1.Cells[3, 0]:= ' На начало аналогичного предыдущего периода';
StringGrid1.Cells[4, 0]:= ' Комментарий';
i:= 1; StringGrid1.Cells[0, i]:= ' I АКТИВЫ' + #13#10;
inc(i); StringGrid1.Cells[0, i]:= ' 1 Долгосрочные активы, находящиеся в собственности предприятия, в том числе:';
inc(i); StringGrid1.Cells[0, i]:= ' коммерческая недвижимость';
inc(i); StringGrid1.Cells[0, i]:= ' оборудование';
inc(i); StringGrid1.Cells[0, i]:= ' автотранспорт';
inc(i); StringGrid1.Cells[0, i]:= ' незавершённое строительство';
inc(i); StringGrid1.Cells[0, i]:= ' 2 Текущие активы, находящиеся в собственности предприятия, в том числе:';
inc(i); StringGrid1.Cells[0, i]:= ' 2.1 Запасы:';
inc(i); StringGrid1.Cells[0, i]:= ' товар на складах, приобретённый для перепродажи';
inc(i); StringGrid1.Cells[0, i]:= ' товар в пути, приобретённый для перепродажи';
inc(i); StringGrid1.Cells[0, i]:= ' товар в торговых точках';
inc(i); StringGrid1.Cells[0, i]:= ' сырьё и материалы на складе, приобретённые для производства продукции (услуг)';
inc(i); StringGrid1.Cells[0, i]:= ' сырьё и материалы в переработке';
inc(i); StringGrid1.Cells[0, i]:= ' готовая продукция на складах';
inc(i); StringGrid1.Cells[0, i]:= ' 2.2 Дебиторы - покупатели (товар, отгруженный с отсрочкой платежей), в том числе:';
inc(i); StringGrid1.Cells[0, i]:= ' дебиторская задолженность, платежи по которой ожидаются в течение 12 месяцев после отчётной даты';
inc(i); StringGrid1.Cells[0, i]:= ' дебиторская задолженность, платежи по которой ожидаются по истечению 12 месяцев после отчётной даты';
inc(i); StringGrid1.Cells[0, i]:= ' дебиторская задолженность - предоплаты поставщикам';
inc(i); StringGrid1.Cells[0, i]:= ' 2.3 Денежные средства, в том числе:';
inc(i); StringGrid1.Cells[0, i]:= ' в кассе';
inc(i); StringGrid1.Cells[0, i]:= ' на всех счетах банков';
inc(i); StringGrid1.Cells[0, i]:= ' прочие депозиты и спец. счета';
inc(i); StringGrid1.Cells[0, i]:= ' 2.4 Прочие текущие активы';
inc(i); StringGrid1.Cells[0, i]:= ' II ПАССИВЫ' + #13#10;
inc(i); StringGrid1.Cells[0, i]:= ' 3 Собственный капитал компании';
inc(i); StringGrid1.Cells[0, i]:= ' 4 Долгосрочный заёмный капитал предприятия:';
inc(i); StringGrid1.Cells[0, i]:= ' полное погашение по которым возникает по истечение 12 месяцев после отчётной даты';
inc(i); StringGrid1.Cells[0, i]:= ' полное погашение по которым возникает по истечение 12 месяцев после отчётной даты';
inc(i); StringGrid1.Cells[0, i]:= ' 5 Краткосрочные пассивы:';
inc(i); StringGrid1.Cells[0, i]:= ' кредиты и займы, погашение по которым возникает в течение 12 месяцев после отчётной даты';
inc(i); StringGrid1.Cells[0, i]:= ' общая задолженность перед поставщиками и подрядчиками';
inc(i); StringGrid1.Cells[0, i]:= ' предоплаты, полученные от покупателей';
inc(i); StringGrid1.Cells[0, i]:= ' общая задолженность перед персоналом предприятия';
inc(i); StringGrid1.Cells[0, i]:= ' общая задолженность по налогам и сборам в бюджет';
inc(i); StringGrid1.Cells[0, i]:= ' общая задолженность перед внебюджетными фондами';
inc(i); StringGrid1.Cells[0, i]:= ' прочие пассивы';
inc(i); StringGrid1.Cells[0, i]:= ' 6 Раскрытие дополнительной информации для выполнения полного анализа:';
inc(i); StringGrid1.Cells[0, i]:= ' капитальные затраты на арендуемые основные средства';
inc(i); StringGrid1.Cells[0, i]:= ' незавершённые капитальные затраты на арендуемые основные средства';
inc(i); StringGrid1.Cells[0, i]:= ' списанная в убыток сумма дебиторской задолженности';
inc(i); StringGrid1.Cells[0, i]:= ' сумма выданных гарантий и поручительств';
inc(i); StringGrid1.Cells[0, i]:= ' величина резерва по сомнительным долгам';
inc(i); StringGrid1.Cells[0, i]:= ' величина просроченной кредиторской задолженности';
inc(i); StringGrid1.Cells[0, i]:= ' численность персонала предприятия';
inc(i); StringGrid1.Cells[0, i]:= ' III ДАННЫЕ О ДОХОДАХ И РАСХОДАХ ПРЕДПРИЯТИЯ' + #13#10;
inc(i); StringGrid1.Cells[0, i]:= ' 7 Общая сумма доходов, в том числе:';
inc(i); StringGrid1.Cells[0, i]:= ' выручка от реализации товаров, работ и услуг (без учёта НДС и акцизов)';
inc(i); StringGrid1.Cells[0, i]:= ' прочие доходы за период';
inc(i); StringGrid1.Cells[0, i]:= ' 8 Расходы по обычным видам деятельности:';
inc(i); StringGrid1.Cells[0, i]:= ' материальные затраты';
inc(i); StringGrid1.Cells[0, i]:= ' з/пл персоналу';
inc(i); StringGrid1.Cells[0, i]:= ' отчисления с з/пл во внебюджетные фонды';
inc(i); StringGrid1.Cells[0, i]:= ' аренда помещения, склада';
inc(i); StringGrid1.Cells[0, i]:= ' коммунальные платежи';
inc(i); StringGrid1.Cells[0, i]:= ' транспортные расходы';
inc(i); StringGrid1.Cells[0, i]:= ' командировочные расходы';
inc(i); StringGrid1.Cells[0, i]:= ' представительские расходы';
inc(i); StringGrid1.Cells[0, i]:= ' реклама';
inc(i); StringGrid1.Cells[0, i]:= ' погашение процентов по кредитам';
inc(i); StringGrid1.Cells[0, i]:= ' налоги';
inc(i); StringGrid1.Cells[0, i]:= ' погашение тела кредитов';
inc(i); StringGrid1.Cells[0, i]:= ' прочие расходы';
inc(i); StringGrid1.Cells[0, i]:= ' 9 Прибыль за период';
// Комментарий
i:= 3; StringGrid1.Cells[4, i]:= 'Общая стоимость недвижимого имущества, которое имеется в собственности у предприятия С УЧЕТОМ ИЗНОСА';
inc(i); StringGrid1.Cells[4, i]:= 'Общая стоимость станков или оборудования, которое имеется в собственности у предприятия С УЧЕТОМ ИЗНОСА';
inc(i); StringGrid1.Cells[4, i]:= 'Общая стоимость автотранспорта, которое имеется в собственности у пред-приятия С УЧЕТОМ ИЗНОСА';
inc(i); StringGrid1.Cells[4, i]:= 'Общая стоимость незавершенного строительства, которое имеется в собственности у предприятия';
inc(i); StringGrid1.Cells[4, i]:= '';
inc(i); StringGrid1.Cells[4, i]:= '';
inc(i); StringGrid1.Cells[4, i]:= 'Общая стоимость товара на всех складах в закупочных ценах, без учета НДС (отдельно в приложении указать адреса складов)';
inc(i); StringGrid1.Cells[4, i]:= 'Общая стоимость товара в пути в закупочных ценах, без учета НДС';
inc(i); StringGrid1.Cells[4, i]:= 'Общая стоимость товара во всех торговых точках в закупочных ценах, без учета НДС (отдельно в приложении указать адреса всех торговых точек)';
inc(i); StringGrid1.Cells[4, i]:= 'По себестоимости (закупочная цена без НДС + транспортные издержки на доставку этих сырья и материалов)';
inc(i); StringGrid1.Cells[4, i]:= 'По себестоимости (закупочная цена без НДС + транспортные издержки на доставку этих сырья и материалов)';
inc(i); StringGrid1.Cells[4, i]:= 'По цене продажи без учета НДС';
inc(i); StringGrid1.Cells[4, i]:= '';
inc(i); StringGrid1.Cells[4, i]:= 'Сумма задолженности, возврат по которой ожидается в течение указанного периода';
inc(i); StringGrid1.Cells[4, i]:= 'Сумма задолженности, возврат по которой ожидается в течение указанного периода';
inc(i); StringGrid1.Cells[4, i]:= 'Сумма которая оплачена поставщикам за товар, который поступит после отчётной даты';
inc(i); StringGrid1.Cells[4, i]:= '';
inc(i); StringGrid1.Cells[4, i]:= 'Сумма, находящаяся в кассе на отчётную дату';
inc(i); StringGrid1.Cells[4, i]:= 'Сумма, находящаяся как на рублёвых, так и на валютных счетах в банках на отчётную дату';
inc(i); StringGrid1.Cells[4, i]:= 'Сберегательные счета, счета пластиковых карт, депозиты, вклады';
inc(i); StringGrid1.Cells[4, i]:= 'Указать стоимость оборотных активов, имеющихся у предприятия, но не учтенные в предыдущих строках (если таковые имеются), на отчетную дату';
inc(i); StringGrid1.Cells[4, i]:= '';
inc(i); StringGrid1.Cells[4, i]:= '';
inc(i); StringGrid1.Cells[4, i]:= '';
inc(i); StringGrid1.Cells[4, i]:= 'Сумма кредитов, погашение по которым ожидается в течение указанного периода';
inc(i); StringGrid1.Cells[4, i]:= 'Сумма займов, погашение по которым ожидается в течение указанного периода';
inc(i); StringGrid1.Cells[4, i]:= '';
inc(i); StringGrid1.Cells[4, i]:= 'Сумма кредитов и займов, погашение по кторым ожидается в течение указанного периода';
inc(i); StringGrid1.Cells[4, i]:= 'Указать общую сумму задолженности предприятия перед поставщиками и подрядчиками за товары, работы, услуги';
inc(i); StringGrid1.Cells[4, i]:= 'Указать общую сумму предоплаты, которую получило предприятие, и по которой ещё не отгружен товар, не предоставлены работы, услуги';
inc(i); StringGrid1.Cells[4, i]:= 'Указать общую сумму начисленной, но на отчетную дату не выплаченную заработную плату';
inc(i); StringGrid1.Cells[4, i]:= 'Указать общую сумму налогов, которые должны быть выплачены в бюджет';
inc(i); StringGrid1.Cells[4, i]:= 'Указать общую сумму отчислений во внебюджетные фонды, которые должны быть выплачены';
inc(i); StringGrid1.Cells[4, i]:= 'Указать общую сумму долгов, имеющихся у предприятия, но не учтенные в предыдущих строках пассивов (если таковые имеются), на отчетную дату';
inc(i); StringGrid1.Cells[4, i]:= '';
inc(i); StringGrid1.Cells[4, i]:= 'Сумма капитальных затрат, которые были направлены на КАПИТАЛЬНЫЙ ремонт арендуемого имущества ';
inc(i); StringGrid1.Cells[4, i]:= 'Сумма капитальных затрат, которые были направлены на НЕЗАВЕРШЕННЫЙ КАПИТАЛЬНЫЙ ремонт арендуемого имущества';
inc(i); StringGrid1.Cells[4, i]:= 'Сумма дебиторской задолженности, по которой оплата так и не наступила';
inc(i); StringGrid1.Cells[4, i]:= '';
inc(i); StringGrid1.Cells[4, i]:= 'Заполняется в том случае, если на предприятии формируются резервы по сомнительным долгам';
inc(i); StringGrid1.Cells[4, i]:= 'Кредиторская задолженность, срок оплаты по которой уже наступил, но задолженность до сих пор не выплачена';
end;
{**** Проверка таблицы, едита и равенство АКТИВ = ПАССИВУ ****}
procedure TForm3.Proverka;
Var
i, j, m, k, g, a, b: Byte;
ch: Double;
Begin
prov:= True; // начальное значение prov - разрешаем выполнять алгоритм
{====================== I. ПРОВЕРКА ТАБЛИЦЫ И ЕДИТА (едит в проверке #7) ======}
for i:= 1 to 3 do // всего 3 года
Begin
{_____________________выполнять проверку для алгоритма #1______________________}
if knop = 1 then
for m:= 1 to 9 do // всего 10 "отрезков" нужных для данного алгоритма заполнений в таблице
Begin
// a - первая строка, b - последняя строка
if m = 1 then begin a:= 3; b:= 6; end;
if m = 2 then begin a:= 9; b:= 14; end;
if m = 3 then begin a:= 16; b:= 18; end;
if m = 4 then begin a:= 20; b:= 23; end;
if m = 5 then begin a:= 27; b:= 28; end;
if m = 6 then begin a:= 30; b:= 36; end;
if m = 7 then begin a:= 40; b:= 41; end;
if m = 8 then begin a:= 47; b:= 48; end;
if m = 9 then begin a:= 50; b:= 62; 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;
{_____________________выполнять проверку для алгоритма #2______________________}
if knop = 2 then
for m:= 1 to 10 do // всего 10 "отрезков" нужных для данного алгоритма заполнений в таблице
Begin
// a - первая строка, b - последняя строка
if m = 1 then begin a:= 3; b:= 6; end;
if m = 2 then begin a:= 9; b:= 14; end;
if m = 3 then begin a:= 16; b:= 18; end;
if m = 4 then begin a:= 20; b:= 23; end;
if m = 5 then begin a:= 27; b:= 28; end;
if m = 6 then begin a:= 30; b:= 36; end;
if m = 7 then begin a:= 40; b:= 41; end;
if m = 8 then begin a:= 43; b:= 43; end;
if m = 9 then begin a:= 47; b:= 48; end;
if m = 10 then begin a:= 50; b:= 62; 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 7 do // всего 7 "отрезков" нужных для данного алгоритма заполнений в таблице
Begin
// a - первая строка, b - последняя строка
if m = 1 then begin a:= 3; b:= 6; end;
if m = 2 then begin a:= 9; b:= 14; end;
if m = 3 then begin a:= 16; b:= 18; end;
if m = 4 then begin a:= 20; b:= 23; end;
if m = 5 then begin a:= 27; b:= 28; end;
if m = 6 then begin a:= 30; b:= 36; end;
if m = 7 then begin a:= 50; b:= 62; 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 6 do // всего 6 "отрезков" нужных для данного алгоритма заполнений в таблице
Begin
// a - первая строка, b - последняя строка
if m = 1 then begin a:= 3; b:= 6; end;
if m = 2 then begin a:= 9; b:= 14; end;
if m = 3 then begin a:= 16; b:= 18; end;
if m = 4 then begin a:= 20; b:= 23; end;
if m = 5 then begin a:= 47; b:= 48; end;
if m = 6 then begin a:= 50; b:= 62; 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;
end;
{====================== II. ПРОВЕРКА УСЛОВИЯ АКТИВ = ПАССИВУ ==================}
{________1) Читаем все заполняемые пользователем переменные из таблицы:________}
// i - № периода и столбца, k - № элемента в массиве, g - № строчки
for i:= 1 to 3 do
Begin
k:= 1; g:= 3; v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
k:= 4; g:= 6; v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
k:= 5; g:= 9; v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
k:= 10; g:= 14; v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
k:= 11; g:= 16; v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
k:= 13; g:= 18; v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
k:= 14; g:= 20; v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
k:= 17; g:= 23; v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
k:= 18; g:= 27; v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
k:= 19; g:= 28; v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
k:= 20; g:= 30; v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
k:= 26; g:= 36; v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
k:= 29; g:= 40; v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
k:= 30; g:= 41; v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
k:= 34; g:= 47; v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
k:= 35; g:= 48; v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
k:= 36; g:= 50; v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
k:= 48; g:= 62; v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
end;
{________2) Считаем значения, которые опираются на выше рассчитанные переменные:_}
for i:= 1 to 3 do
Begin
// АКТИВ
z[v1, i]:= v[1, i] + v[2, i] + v[3, i] + v[4, i];
z[v2_1, i]:= v[5, i] + v[6, i] + v[7, i] + v[8, i] + v[9, i] + v[10, i];
z[v2_2, i]:= v[11, i] + v[12, i] + v[13, i];
z[v2_3, i]:= v[14, i] + v[15, i] + v[16, i];
z[v2, i]:= z[v2_1, i] + z[v2_2, i] + z[v2_3, i] + v[17, i];
z[vI, i]:= z[v1, i] + z[v2, i];
// ПАССИВ
z[v4, i]:= v[18, i] + v[19, i];
z[v5, i]:= v[20, i] + v[21, i] + v[22, i] + v[23, i] + v[24, i] + v[25, i] + v[26, i];
z[v3, i]:= z[vI, i] - z[v4, i] - z[v5, i];
z[v7, i]:= v[34, i] + v[35, i];
z[v8, i]:= v[36, i] + v[37, i] + v[38, i] + v[39, i] + v[40, i] + v[41, i] + v[42, i] +
v[43, i] + v[44, i] + v[45, i] + v[46, i] + v[47, i] + v[48, i];
z[v9, i]:= z[v7, i] - z[v8, i];
z[vII, i]:= z[v3, i] + z[v4, i] + z[v5, i];
end;
// проверим выполнение условия: АКТИВ = ПАССИВУ
for i:= 1 to 3 do // всего 3 периода
Begin
if z[vI, i] <> z[vII, i] then
Begin
ShowMessage('Ошибка.' + #13#10 +
'Не выполняется условие ' + FloatToStr(i) + ' года:' + #13#10 +
'Актив не равен пассиву');
prov:= False; // не разрешаем выполнять алгоритм
Exit; // выходим из процедуры проверки
end;
end;
end;
{**** Форматирование таблицы # 1 - Запрет на редактирование отдельных ячеек ****}
procedure TForm3.StringGrid1SelectCell(Sender: TObject; ACol,
ARow: Integer; var CanSelect: Boolean);
Begin
// Запрет либо на..
if (ACol = 4) or //..столбец с комментариями
//..цветные поля в таблице
(((ARow = 1) or (ARow = 2) or (ARow = 7) or (ARow = 8) or (ARow = 15) or
(ARow = 19) or (ARow = 24) or (ARow = 25) or (ARow = 26) or (ARow = 29) or
(ARow = 37) or (ARow = 45) or (ARow = 46) or (ARow = 49) or (ARow = 63)) and
((ACol = 1) or (ACol = 2) or (ACol = 3))) then
Begin
CanSelect:= False;
StringGrid1.Options:= StringGrid1.Options - [goEditing];
End
Else
Begin
CanSelect:= True;
StringGrid1.Options:= StringGrid1.Options + [goEditing];
end;
end;
{**** Форматирование таблицы # 2 ****}
procedure TForm3.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
Var
s: String;
Flag: Cardinal;
H: Integer;
i: Byte;
Begin
{________________________________________Выравнивание ячеек____________________}
StringGrid1.Canvas.FillRect(Rect);
s:= StringGrid1.Cells[ACol, ARow];
Flag:= DT_LEFT;
Flag:= Flag or DT_WORDBREAK;
Inc(Rect.Left, 0);
Dec(Rect.Right, 0);
H:= DrawText(StringGrid1.Canvas.Handle, PChar(s), Length(s), Rect, Flag);
if H > StringGrid1.RowHeights[ARow] then
StringGrid1.RowHeights[ARow]:= H; // Увеличиваем
{________________________________________Цветные строчки_______________________}
// АКТИВЫ
for i:= 0 to 4 do
Begin
if (ACol = i) and (ARow = 1) then
Begin
StringGrid1.Canvas.Brush.Color:= rgb(0, 205, 0); // тёмно-зелёный
StringGrid1.Canvas.FillRect(Rect);
StringGrid1.Canvas.TextRect(Rect, Rect.Left + 2, Rect.Top + 2, StringGrid1.Cells[ACol, ARow]);
end;
end;
for i:= 0 to 4 do
Begin
if (ACol = i) and (ARow = 2) then
Begin
StringGrid1.Canvas.Brush.Color:= rgb(154, 255, 154); // салатовый
StringGrid1.Canvas.FillRect(Rect);
StringGrid1.Canvas.TextRect(Rect, Rect.Left + 2, Rect.Top + 2, StringGrid1.Cells[ACol, ARow]);
end;
end;
for i:= 0 to 4 do
Begin
if (ACol = i) and (ARow = 7) then
Begin
StringGrid1.Canvas.Brush.Color:= rgb(154, 255, 154); // салатовый
StringGrid1.Canvas.FillRect(Rect);
StringGrid1.Canvas.TextRect(Rect, Rect.Left + 2, Rect.Top + 2, StringGrid1.Cells[ACol, ARow]);
end;
end;
for i:= 0 to 4 do
Begin
if (ACol = i) and (ARow = 8) then
Begin
StringGrid1.Canvas.Brush.Color:= rgb(154, 255, 154); // салатовый
StringGrid1.Canvas.FillRect(Rect);
StringGrid1.Canvas.TextRect(Rect, Rect.Left + 2, Rect.Top + 2, StringGrid1.Cells[ACol, ARow]);
end;
end;
for i:= 0 to 4 do
Begin
if (ACol = i) and (ARow = 15) then
Begin
StringGrid1.Canvas.Brush.Color:= rgb(154, 255, 154); // салатовый
StringGrid1.Canvas.FillRect(Rect);
StringGrid1.Canvas.TextRect(Rect, Rect.Left + 2, Rect.Top + 2, StringGrid1.Cells[ACol, ARow]);
end;
end;
for i:= 0 to 4 do
Begin
if (ACol = i) and (ARow = 19) then
Begin
StringGrid1.Canvas.Brush.Color:= rgb(154, 255, 154); // салатовый
StringGrid1.Canvas.FillRect(Rect);
StringGrid1.Canvas.TextRect(Rect, Rect.Left + 2, Rect.Top + 2, StringGrid1.Cells[ACol, ARow]);
end;
end;
if (ACol = 0) and (ARow = 23) then
Begin
StringGrid1.Canvas.Brush.Color:= rgb(154, 255, 154); // салатовый
StringGrid1.Canvas.FillRect(Rect);
StringGrid1.Canvas.TextRect(Rect, Rect.Left + 2, Rect.Top + 2, StringGrid1.Cells[ACol, ARow]);
end;
// ПАССИВЫ
for i:= 0 to 4 do
Begin
if (ACol = i) and (ARow = 24) then
Begin
StringGrid1.Canvas.Brush.Color:= rgb(67, 110, 238); // тёмно-синий
StringGrid1.Canvas.FillRect(Rect);
StringGrid1.Canvas.TextRect(Rect, Rect.Left + 2, Rect.Top + 2, StringGrid1.Cells[ACol, ARow]);
end;
end;
for i:= 0 to 4 do
Begin
if (ACol = i) and (ARow = 25) then
Begin
StringGrid1.Canvas.Brush.Color:= rgb(135, 206, 235); // голубой
StringGrid1.Canvas.FillRect(Rect);
StringGrid1.Canvas.TextRect(Rect, Rect.Left + 2, Rect.Top + 2, StringGrid1.Cells[ACol, ARow]);
end;
end;
for i:= 0 to 4 do
Begin
if (ACol = i) and (ARow = 26) then
Begin
StringGrid1.Canvas.Brush.Color:= rgb(135, 206, 235); // голубой
StringGrid1.Canvas.FillRect(Rect);
StringGrid1.Canvas.TextRect(Rect, Rect.Left + 2, Rect.Top + 2, StringGrid1.Cells[ACol, ARow]);
end;
end;
for i:= 0 to 4 do
Begin
if (ACol = i) and (ARow = 29) then
Begin
StringGrid1.Canvas.Brush.Color:= rgb(135, 206, 235); // голубой
StringGrid1.Canvas.FillRect(Rect);
StringGrid1.Canvas.TextRect(Rect, Rect.Left + 2, Rect.Top + 2, StringGrid1.Cells[ACol, ARow]);
end;
end;
for i:= 0 to 4 do
Begin
if (ACol = i) and (ARow = 37) then
Begin
StringGrid1.Canvas.Brush.Color:= rgb(135, 206, 235); // голубой
StringGrid1.Canvas.FillRect(Rect);
StringGrid1.Canvas.TextRect(Rect, Rect.Left + 2, Rect.Top + 2, StringGrid1.Cells[ACol, ARow]);
end;
end;
// Данные о доходах и расходах предприятия
for i:= 0 to 4 do
Begin
if (ACol = i) and (ARow = 45) then
Begin
StringGrid1.Canvas.Brush.Color:= rgb(238, 44, 44); // тёмно-красный
StringGrid1.Canvas.FillRect(Rect);
StringGrid1.Canvas.TextRect(Rect, Rect.Left + 2, Rect.Top + 2, StringGrid1.Cells[ACol, ARow]);
end;
end;
for i:= 0 to 4 do
Begin
if (ACol = i) and (ARow = 46) then
Begin
StringGrid1.Canvas.Brush.Color:= rgb(250, 128, 114); // розовый
StringGrid1.Canvas.FillRect(Rect);
StringGrid1.Canvas.TextRect(Rect, Rect.Left + 2, Rect.Top + 2, StringGrid1.Cells[ACol, ARow]);
end;
end;
for i:= 0 to 4 do
Begin
if (ACol = i) and (ARow = 49) then
Begin
StringGrid1.Canvas.Brush.Color:= rgb(250, 128, 114); // розовый
StringGrid1.Canvas.FillRect(Rect);
StringGrid1.Canvas.TextRect(Rect, Rect.Left + 2, Rect.Top + 2, StringGrid1.Cells[ACol, ARow]);
end;
end;
for i:= 0 to 4 do
Begin
if (ACol = i) and (ARow = 63) then
Begin
StringGrid1.Canvas.Brush.Color:= rgb(250, 128, 114); // розовый
StringGrid1.Canvas.FillRect(Rect);
StringGrid1.Canvas.TextRect(Rect, Rect.Left + 2, Rect.Top + 2, StringGrid1.Cells[ACol, ARow]);
end;
end;
end;
{**** Запрет ввода символов Едита ****}
procedure TForm3.Edit1KeyPress(Sender: TObject; var Key: Char);
Begin
// ввод только чисел, <Back Space>, <Enter>
if not (Key in ['0'..'9', #8, #13]) then
Key:= #0; // символ не отображать, если не соответствует условию
end;
{***** Запрет ввода символов таблицы ****}
procedure TForm3.StringGrid1KeyPress(Sender: TObject; var Key: Char);
Begin
// ввод только чисел, <Back Space>, <Enter>, разделителя
if not (Key in ['0'..'9', #8, #13, DecimalSeparator]) then
Key:= #0; // символ не отображать, если не соответствует условию
end;
{**** Панель - Назад ****}
procedure TForm3.Action1Execute(Sender: TObject);
Begin
Form2.Show;
Form3.Hide;
end;
{**** Панель - Сохранить как... *****}
procedure TForm3.Action2Execute(Sender: TObject);
Var
f: TextFile;
i, j: Byte;
s: String;
Begin
if SaveDialog1.Execute then // выполняется диалог 'Сохранить как...'
Begin
AssignFile(f, SaveDialog1.FileName); // связывает логическое имя файла с физическим
Rewrite(f); // открыть файл для записи
Append(f);
for i:= 1 to 3 do // всего 3 периода
for j:= 1 to 63 do // всего 63 строчек
Begin
s:= StringGrid1.Cells[i, j]; // каждая строчка - значение очередной ячейки
Writeln(f, s); // записываем эти строчки
end;
CloseFile(f); // закрываем файл
end;
end;
{**** Панель - Открыть... ****}
procedure TForm3.Action3Execute(Sender: TObject);
Var
f: TextFile;
i, j: Byte;
s: String;
Begin
if OpenDialog1.Execute then begin // выполняется диалог 'Открыть...'
AssignFile(f, OpenDialog1.FileName); // связывает логическое имя файла с физическим
Reset(f); // чтение/запись
for i:= 1 to 3 do // всего 3 периода
for j:= 1 to 63 do // всего 63 строчек
Begin
Readln(f, s); // читаем эти строчки
StringGrid1.Cells[i, j]:= s; // каждая ячейка - значение очередной строчки
end;
CloseFile(f); // закрываем файл
end;
end;
{**** Панель - Печать... ****}
procedure TForm3.Action4Execute(Sender: TObject);
Begin
PrintGrid(StringGrid1, lbCaption);
end;
{**** Панель - Помощь ****}
procedure TForm3.Action5Execute(Sender: TObject);
Begin
ShellExecute(handle, 'open', 'helpfile.pdf', nil, nil, SW_SHOWNORMAL);
end;
{**** Панель - О программе ****}
procedure TForm3.Action6Execute(Sender: TObject);
Begin
Form22.Show;
end;
{**** Панель - АЛГОРИТМЫ: ****}
// 1) Показатели финансово-хозяйственной деятельности
procedure TForm3.Action7Execute(Sender: TObject);
Var
i, k, g: Byte;
Begin
knop:= 1; // определяем, что для данного алгоритма нужно выполнять 1ую проверку
Proverka; // вызываем процедуру проверки ячеек таблицы
if prov = True then // если всё хорошо, то можно выполнять алгоритм
Begin
v0:= StrToFloat(Form3.Edit1.Text);
{________1) Читаем все заполняемые пользователем переменные из таблицы:________}
// i - № периода и столбца, k - № элемента в массиве, g - № строчки
for i:= 1 to 3 do
Begin
k:= 1; g:= 3; v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
k:= 4; g:= 6; v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
k:= 5; g:= 9; v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
k:= 10; g:= 14; v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
k:= 11; g:= 16; v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
k:= 13; g:= 18; v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
k:= 14; g:= 20; v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
k:= 17; g:= 23; v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
k:= 18; g:= 27; v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
k:= 19; g:= 28; v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
k:= 20; g:= 30; v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
k:= 26; g:= 36; v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
k:= 29; g:= 40; v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
k:= 30; g:= 41; v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
k:= 34; g:= 47; v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
k:= 35; g:= 48; v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
k:= 36; g:= 50; v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
k:= 48; g:= 62; v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
end;
{________2) Считаем значения, которые опираются на выше рассчитанные переменные:_}
for i:= 1 to 3 do
Begin
// АКТИВ
z[v1, i]:= v[1, i] + v[2, i] + v[3, i] + v[4, i];
z[v2_1, i]:= v[5, i] + v[6, i] + v[7, i] + v[8, i] + v[9, i] + v[10, i];
z[v2_2, i]:= v[11, i] + v[12, i] + v[13, i];
z[v2_3, i]:= v[14, i] + v[15, i] + v[16, i];
z[v2, i]:= z[v2_1, i] + z[v2_2, i] + z[v2_3, i] + v[17, i];
z[vI, i]:= z[v1, i] + z[v2, i];
// ПАССИВ
z[v4, i]:= v[18, i] + v[19, i];
z[v5, i]:= v[20, i] + v[21, i] + v[22, i] + v[23, i] + v[24, i] + v[25, i] + v[26, i];
z[v3, i]:= z[vI, i] - z[v4, i] - z[v5, i];
z[v7, i]:= v[34, i] + v[35, i];
z[v8, i]:= v[36, i] + v[37, i] + v[38, i] + v[39, i] + v[40, i] + v[41, i] + v[42, i] +
v[43, i] + v[44, i] + v[45, i] + v[46, i] + v[47, i] + v[48, i];
z[v9, i]:= z[v7, i] - z[v8, i];
end;
{________3) Считаем переменные-буквы:__________________________________________}
for i:= 1 to 3 do
Begin
b[SA, i]:= z[vI, i];
b[SVA, i]:= z[v1, i];
b[OA, i]:= z[v2, i];
b[LA, i]:= z[v2_3, i] + v[17, i] + z[v2_2, i] + v[5, i] + v[7, i] + v[10, i];
b[NLOA, i]:= z[v2_3, i] + v[17, i];
b[KDZ, i]:= z[v2_2, i];
b[SS, i]:= z[v3, i];
b[OD, i]:= z[v4, i] + z[v5, i];
b[TKO, i]:= z[v5, i];
b[Vpr, i]:= v[34, i];
b[Vsr, i]:= v[34, i] / v0;
b[CHPr, i]:= z[v9, i];
b[D, i]:= v[34, i] + v[35, i];
b[POAV, i]:= v[29, i] + v[30, i];
end;
Form18.Show;
end;
end;
// 2) Коэффициенты эффективности деятельности
procedure TForm3.Action8Execute(Sender: TObject);
Var
i, k, g: Byte;
Begin
knop:= 2; // определяем, что для данного алгоритма нужно выполнять 1ую проверку
Proverka; // вызываем процедуру проверки ячеек таблицы
if prov = True then // если всё хорошо, то можно выполнять алгоритм
Begin
{________1) Читаем все заполняемые пользователем переменные из таблицы:________}
// i - № периода и столбца, k - № элемента в массиве, g - № строчки
for i:= 1 to 3 do
Begin
k:= 1; g:= 3; v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
k:= 4; g:= 6; v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
k:= 5; g:= 9; v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
k:= 10; g:= 14; v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
k:= 11; g:= 16; v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
k:= 13; g:= 18; v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
k:= 14; g:= 20; v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
k:= 17; g:= 23; v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
k:= 18; g:= 27; v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
k:= 19; g:= 28; v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
k:= 20; g:= 30; v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
k:= 26; g:= 36; v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
k:= 29; g:= 40; v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
k:= 30; g:= 41; v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
k:= 32; g:= 43; v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
k:= 34; g:= 47; v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
k:= 35; g:= 48; v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
k:= 36; g:= 50; v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
k:= 48; g:= 62; v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
end;
{________2) Считаем значения, которые опираются на выше рассчитанные переменные:_}
for i:= 1 to 3 do
Begin
// АКТИВ
z[v1, i]:= v[1, i] + v[2, i] + v[3, i] + v[4, i];
z[v2_1, i]:= v[5, i] + v[6, i] + v[7, i] + v[8, i] + v[9, i] + v[10, i];
z[v2_2, i]:= v[11, i] + v[12, i] + v[13, i];
z[v2_3, i]:= v[14, i] + v[15, i] + v[16, i];
z[v2, i]:= z[v2_1, i] + z[v2_2, i] + z[v2_3, i] + v[17, i];
z[vI, i]:= z[v1, i] + z[v2, i];
// ПАССИВ
z[v4, i]:= v[18, i] + v[19, i];
z[v5, i]:= v[20, i] + v[21, i] + v[22, i] + v[23, i] + v[24, i] + v[25, i] + v[26, i];
z[v3, i]:= z[vI, i] - z[v4, i] - z[v5, i];
z[v7, i]:= v[34, i] + v[35, i];
z[v8, i]:= v[36, i] + v[37, i] + v[38, i] + v[39, i] + v[40, i] + v[41, i] + v[42, i] +
v[43, i] + v[44, i] + v[45, i] + v[46, i] + v[47, i] + v[48, i];
z[v9, i]:= z[v7, i] - z[v8, i];
end;
{________3) Считаем переменные-буквы:__________________________________________}
for i:= 1 to 3 do
Begin
b[SA, i]:= z[vI, i];
b[SVA, i]:= z[v1, i];
b[OA, i]:= z[v2, i];
b[LA, i]:= z[v2_3, i] + v[17, i] + z[v2_2, i] + v[5, i] + v[7, i] + v[10, i];
b[NLOA, i]:= z[v2_3, i] + v[17, i];
b[SS, i]:= z[v3, i];
b[OD, i]:= z[v4, i] + z[v5, i];
b[TKO, i]:= z[v5, i];
b[Vpr, i]:= v[34, i];
b[CHPr, i]:= z[v9, i];
b[D, i]:= v[34, i] + v[35, i];
b[POAV, i]:= v[29, i] + v[30, i];
b[PKZ, i]:= v[32, i];
b[DZ, i]:= v[11, i] + v[12, i];
end;
Form19.Show;
end;
end;
// 3) Показатели по методике У. Бивера
procedure TForm3.Action9Execute(Sender: TObject);
Var
i, k, g: Byte;
Begin
knop:= 3; // определяем, что для данного алгоритма нужно выполнять 1ую проверку
Proverka; // вызываем процедуру проверки ячеек таблицы
if prov = True then // если всё хорошо, то можно выполнять алгоритм
Begin
{________1) Читаем все заполняемые пользователем переменные из таблицы:________}
// i - № периода и столбца, k - № элемента в массиве, g - № строчки
for i:= 1 to 3 do
Begin
k:= 1; g:= 3; v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
k:= 4; g:= 6; v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
k:= 5; g:= 9; v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
k:= 10; g:= 14; v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
k:= 11; g:= 16; v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
k:= 13; g:= 18; v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
k:= 14; g:= 20; v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
k:= 17; g:= 23; v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
k:= 18; g:= 27; v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
k:= 19; g:= 28; v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
k:= 20; g:= 30; v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
k:= 26; g:= 36; v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
k:= 36; g:= 50; v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
k:= 48; g:= 62; v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
end;
{________2) Считаем значения, которые опираются на выше рассчитанные переменные:_}
for i:= 1 to 3 do
Begin
// АКТИВ
z[v1, i]:= v[1, i] + v[2, i] + v[3, i] + v[4, i];
z[v2_1, i]:= v[5, i] + v[6, i] + v[7, i] + v[8, i] + v[9, i] + v[10, i];
z[v2_2, i]:= v[11, i] + v[12, i] + v[13, i];
z[v2_3, i]:= v[14, i] + v[15, i] + v[16, i];
z[v2, i]:= z[v2_1, i] + z[v2_2, i] + z[v2_3, i] + v[17, i];
z[vI, i]:= z[v1, i] + z[v2, i];
// ПАССИВ
z[v4, i]:= v[18, i] + v[19, i];
z[v5, i]:= v[20, i] + v[21, i] + v[22, i] + v[23, i] + v[24, i] + v[25, i] + v[26, i];
z[v3, i]:= z[vI, i] - z[v4, i] - z[v5, i];
// ДАННЫЕ О ДОХОДАХ И РАСХОДАХ ПРЕДПРИЯТИЯ
z[v7, i]:= v[34, i] + v[35, i];
z[v8, i]:= v[36, i] + v[37, i] + v[38, i] + v[39, i] + v[40, i] + v[41, i] + v[42, i] +
v[43, i] + v[44, i] + v[45, i] + v[46, i] + v[47, i] + v[48, i];
z[v9, i]:= z[v7, i] - z[v8, i];
end;
{________3) Считаем переменные-буквы:__________________________________________}
for i:= 1 to 3 do
Begin
b[SA, i]:= z[vI, i];
b[OA, i]:= z[v2, i];
b[OD, i]:= z[v4, i] + z[v5, i];
b[TKO, i]:= z[v5, i];
b[CHPr, i]:= z[v9, i];
b[SOS, i]:= z[v3, i] - z[v1, i];
end;
Form20.Show;
end;
end;
// 4) Золотое правило экономики
procedure TForm3.Action10Execute(Sender: TObject);
Var
i, k, g: Byte;
Begin
knop:= 4; // определяем, что для данного алгоритма нужно выполнять 1ую проверку
Proverka; // вызываем процедуру проверки ячеек таблицы
if prov = True then // если всё хорошо, то можно выполнять алгоритм
Begin
{________1) Читаем все заполняемые пользователем переменные из таблицы:________}
for i:= 1 to 3 do
Begin
k:= 1; g:= 3; v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
k:= 4; g:= 6; v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
k:= 5; g:= 9; v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
inc(k); inc(g); v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
k:= 10; g:= 14; v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
k:= 11; g:= 16; v[k, i]:= StrToFloat(StringGrid1.Cells[i, g]);
Дата добавления: 2015-10-13; просмотров: 87 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Private | | | Interface |