Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Implementation

Читайте также:
  1. IMPLEMENTATION
  2. Implementation 1 страница
  3. Implementation 2 страница
  4. Implementation 3 страница
  5. Implementation 4 страница

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 | Нарушение авторских прав


Читайте в этой же книге: Основные показатели, характеризующие финансовую устойчивость | Основные показатели, характеризующие деловую активность | Основные показатели, характеризующие деловую активность | Коэффициенты эффективности деятельности | Диагностика банкротства предприятия | Исследовательский раздел | Модель TO-BE | Обоснование выбора языка и среды программирования | Описание главной формы | СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ |
<== предыдущая страница | следующая страница ==>
Private| Interface

mybiblioteka.su - 2015-2024 год. (0.29 сек.)