Читайте также: |
|
Uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, TeEngine, Series, ExtCtrls, TeeProcs, Chart, StdCtrls;
Type
TForm8 = class (TForm)
Chart1: TChart;
Series1: TBarSeries;
Series2: TBarSeries;
Series3: TBarSeries;
Label1: TLabel;
Private
Public
end;
Var
Form8: TForm8;
Implementation
uses main;
end.
2.2.6 UNIT TABL_4
unit Tabl_4;
Interface
Uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, Grids, StdCtrls, ActnList, ToolWin, ActnMan,
ActnCtrls, ActnMenus, XPStyleActnCtrls;
Type
TForm10 = class (TForm)
StringGrid1: TStringGrid;
StaticText1: TStaticText;
Label4: TLabel;
Label5: TLabel;
StaticText2: TStaticText;
Label6: TLabel;
Label7: TLabel;
StaticText3: TStaticText;
Label8: TLabel;
Label9: TLabel;
ActionManager1: TActionManager;
ActionMainMenuBar1: TActionMainMenuBar;
Action1: TAction;
Action2: TAction;
Action3: TAction;
Action4: TAction;
lbCaption: TLabel;
procedure FormShow(Sender: TObject);
procedure StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
procedure Action1Execute(Sender: TObject);
procedure Action2Execute(Sender: TObject);
procedure Action3Execute(Sender: TObject);
procedure Action4Execute(Sender: TObject);
procedure Shapka;
procedure Zapolnenie;
Private
Public
end;
Var
Form10: TForm10;
Implementation
uses Enterprise, Tabl_3_Graph, Tabl_4_Graph, PrnGridUnit, Programm, ShellAPI;
{***** Появление формы ****}
procedure TForm10.FormShow(Sender: TObject);
Begin
Shapka;
Zapolnenie;
end;
{**** Шапка таблиц ****}
procedure TForm10.Shapka;
Var
i, j: Byte;
Begin
// Ширина столбцов
StringGrid1.ColWidths[0]:= 400;
StringGrid1.ColWidths[1]:= 120;
StringGrid1.ColWidths[2]:= 120;
StringGrid1.ColWidths[3]:= 120;
StringGrid1.ColWidths[4]:= 120;
StringGrid1.ColWidths[5]:= 120;
// Шапка таблицы
// i - столб, j - строка
j:= 0;
i:= 0; StringGrid1.Cells[i, j]:= ' Показатели';
inc(i); StringGrid1.Cells[i, j]:= ' 1 год (берутся данные на начало аналогичного предыдущего периода)';
inc(i); StringGrid1.Cells[i, j]:= ' 2 год (берутся данные на начало отчётного периода)';
inc(i); StringGrid1.Cells[i, j]:= ' Изменения (+/-)';
inc(i); StringGrid1.Cells[i, j]:= ' 3 год (берутся данные на конец отчётного периода)';
inc(i); StringGrid1.Cells[i, j]:= ' Изменения (+/-)';
i:= 0;
j:= 1; StringGrid1.Cells[i, j]:= ' Коэффициент концентрации собственного капитала (Кск)';
inc(j); StringGrid1.Cells[i, j]:= ' Коэффициент финансовой зависимости (Кфз)';
inc(j); StringGrid1.Cells[i, j]:= ' Коэффициент маневренности собственного капитала (Кмск)';
inc(j); StringGrid1.Cells[i, j]:= ' Коэффициент концентрации заёмного капитала (Ккзк)';
inc(j); StringGrid1.Cells[i, j]:= ' Коэффициент структуры долгосрочных вложений (Ксдв)';
inc(j); StringGrid1.Cells[i, j]:= ' Коэффициент долгосрочного привлечения заёмных средств (Кдп)';
inc(j); StringGrid1.Cells[i, j]:= ' Коэффициент структуры заёмного капитала (Кскз)';
inc(j); StringGrid1.Cells[i, j]:= ' Коэффициент соотношения заёмных и собственных средств (Кс/з)';
inc(j); StringGrid1.Cells[i, j]:= ' Скорость оборота материальных оборотных средств (Кмс)';
inc(j); StringGrid1.Cells[i, j]:= ' Скорость оборота дебиторской задолженности за анализируемый период (Кдз)';
inc(j); StringGrid1.Cells[i, j]:= ' Коэффициент реальной стоимости имущества (Кр)';
end;
{**** Заполнение таблиц ****}
procedure TForm10.Zapolnenie;
Type
T_F1 = (Fs, Ft, Fo);
T_F2 = Array [T_F1, 1..3] of Double;
T_K = Array [1..11, 1..3] of Double;
Var
i, m, n: Byte;
f: T_F2;
k: T_K;
Begin
// Рассчитаем коэффициенты
for i:= 1 to 3 do
Begin
f[Fs, i]:= b[SOS, i] - b[ZZ, i];
f[Ft, i]:= b[FKo, i] - b[ZZ, i];
f[Fo, i]:= b[WI, i] - b[ZZ, i];
k[ 1, i]:= b[KiR, i] / b[SA, i];
k[ 2, i]:= b[SA, i] / b[KiR, i];
k[ 3, i]:= b[SOS, i] / b[KiR, i];
k[ 4, i]:= b[OD, i] / b[SA, i];
k[ 5, i]:= b[FK, i] / b[VOA, i];
k[ 6, i]:= b[DOO, i] / b[FK, i];
k[ 7, i]:= b[DOO, i] / b[OD, i];
k[ 8, i]:= b[OD, i] / b[KiR, i];
k[ 9, i]:= b[Vpr, i] / _ZZ;
k[10, i]:= b[Vpr, i] / _DZ;
k[11, i]:= b[Ri, i] / b[SA, i];
end;
// Заполняем в таблицу относительные показатели
for i:= 3 downto 1 do // нужно заполнить 1ый, 2ой и 3й год
Begin
if i = 3 then m:= 1; // заполняем 1 год
if i = 2 then m:= 2; // заполняем 2 год
if i = 1 then m:= 4; // заполняем 3 год
n:= 1; StringGrid1.Cells[m, n]:= FormatFloat('0.00', k[ 1, i]);
inc(n); StringGrid1.Cells[m, n]:= FormatFloat('0.00', k[ 2, i]);
inc(n); StringGrid1.Cells[m, n]:= FormatFloat('0.00', k[ 3, i]);
inc(n); StringGrid1.Cells[m, n]:= FormatFloat('0.00', k[ 4, i]);
inc(n); StringGrid1.Cells[m, n]:= FormatFloat('0.00', k[ 5, i]);
inc(n); StringGrid1.Cells[m, n]:= FormatFloat('0.00', k[ 6, i]);
inc(n); StringGrid1.Cells[m, n]:= FormatFloat('0.00', k[ 7, i]);
inc(n); StringGrid1.Cells[m, n]:= FormatFloat('0.00', k[ 8, i]);
inc(n); StringGrid1.Cells[m, n]:= FormatFloat('0.00', k[ 9, i]);
inc(n); StringGrid1.Cells[m, n]:= FormatFloat('0.00', k[10, i]);
inc(n); StringGrid1.Cells[m, n]:= FormatFloat('0.00', k[11, i]);
end;
// Заполняем в таблицу изменения #1
m:= 3; // столбик
n:= 1; // начинаем с 1ой строчки
for i:= 1 to 11 do
Begin
StringGrid1.Cells[m, n]:= FormatFloat('0.00', k[i, 3] - k[i, 2]);
inc(n);
end;
// Заполняем в таблицу изменения #1
m:= 5; // столбик
n:= 1; // начинаем с 1ой строчки
for i:= 1 to 11 do
Begin
StringGrid1.Cells[m, n]:= FormatFloat('0.00', k[i, 1] - k[i, 2]);
inc(n);
end;
// Заполняем комментарий внизу таблицы на счёт типа фин. устойчивости
for i:= 3 downto 1 do // нужно заполнить 1ый, 2ой и 3й год
Begin
// 1 тип
if (f[Fs, i] >= 0) and (f[Ft, i] >= 0) and (f[Fo, i] >= 0) then
Begin
if i = 3 then // 1 год
Begin
Label4.Caption:= '1 тип - Абсолютная устойчивость финансового состояния:';
Label5.Caption:= 'Фс >= 0; Фт >= 0; Фо >= 0; т.е. S = {1, 1, 1}';
end;
if i = 2 then // 2 год
Begin
Label6.Caption:= '1 тип - Абсолютная устойчивость финансового состояния:';
Label7.Caption:= 'Фс >= 0; Фт >= 0; Фо >= 0; т.е. S = {1, 1, 1}';
end;
if i = 1 then // 3 год
Begin
Label8.Caption:= '1 тип - Абсолютная устойчивость финансового состояния:';
Label9.Caption:= 'Фс >= 0; Фт >= 0; Фо >= 0; т.е. S = {1, 1, 1}';
end;
end;
// 2 тип
if (f[Fs, i] < 0) and (f[Ft, i] >= 0) and (f[Fo, i] >= 0) then
Begin
if i = 3 then // 1 год
Begin
Label4.Caption:= '2 тип - Нормальная устойчивость финансового состояния:';
Label5.Caption:= 'Фс < 0; Фт >= 0; Фо >= 0; т.е. S = {0, 1, 1}';
end;
if i = 2 then // 2 год
Begin
Label6.Caption:= '2 тип - Нормальная устойчивость финансового состояния:';
Label7.Caption:= 'Фс < 0; Фт >= 0; Фо >= 0; т.е. S = {0, 1, 1}';
end;
if i = 1 then // 3 год
Begin
Label8.Caption:= '2 тип - Нормальная устойчивость финансового состояния:';
Label9.Caption:= 'Фс < 0; Фт >= 0; Фо >= 0; т.е. S = {0, 1, 1}';
end;
end;
// 3 тип
if (f[Fs, i] < 0) and (f[Ft, i] < 0) and (f[Fo, i] >= 0) then
Begin
if i = 3 then // 1 год
Begin
Label4.Caption:= '3 тип - Неустойчивое финансовое состояние:';
Label5.Caption:= 'Фс < 0; Фт < 0; Фо >= 0; т.е. S = {0, 0, 1}';
end;
if i = 2 then // 2 год
Begin
Label6.Caption:= '3 тип - Неустойчивое финансовое состояние:';
Label7.Caption:= 'Фс < 0; Фт < 0; Фо >= 0; т.е. S = {0, 0, 1}';
end;
if i = 1 then // 3 год
Begin
Label8.Caption:= '3 тип - Неустойчивое финансовое состояние:';
Label9.Caption:= 'Фс < 0; Фт < 0; Фо >= 0; т.е. S = {0, 0, 1}';
end;
end;
// 4 тип
if (f[Fs, i] < 0) and (f[Ft, i] < 0) and (f[Fo, i] < 0) then
Begin
if i = 3 then // 1 год
Begin
Label4.Caption:= '4 тип - Кризисное финансовое состояние:';
Label5.Caption:= 'Фс < 0; Фт < 0; Фо < 0; т.е. S = {0, 0, 0}';
end;
if i = 2 then // 2 год
Begin
Label6.Caption:= '4 тип - Кризисное финансовое состояние:';
Label7.Caption:= 'Фс < 0; Фт < 0; Фо < 0; т.е. S = {0, 0, 0}';
end;
if i = 1 then // 3 год
Begin
Label8.Caption:= '4 тип - Кризисное финансовое состояние:';
Label9.Caption:= 'Фс < 0; Фт < 0; Фо < 0; т.е. S = {0, 0, 0}';
end;
end;
end;
end;
{**** Форматирование таблицы ****}
procedure TForm10.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
Var
s: String;
Flag: Cardinal;
H: Integer;
i, j, m: Byte;
Begin
{_________________Выделение цветом ячеек (для изменений #1 и #2)_______________}
for m:= 1 to 2 do // для того, чтобы заполнить два раза (т.е. два столбика)
Begin
for j:= 1 to 11 do // от 1 до 11 строчки
Begin
if m = 1 then i:= 3 // заполняем 3ий столбик
else i:= 5; // заполняем 5ый столбик
if (ACol = i) and (ARow = j) and (StrToFloat(StringGrid1.Cells[i, j]) >= 0) 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;
if (ACol = i) and (ARow = j) and (StrToFloat(StringGrid1.Cells[i, j]) < 0) 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;
{________________________________________Выравнивание ячеек____________________}
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; // Увеличиваем
end;
{**** Панель - Печать ****}
procedure TForm10.Action1Execute(Sender: TObject);
Begin
PrintGrid(StringGrid1, lbCaption);
end;
{**** Панель - Диаграмма ****}
procedure TForm10.Action2Execute(Sender: TObject);
var i, j: Byte;
Begin
i:= 1; // столбик (1ый год)
for j:= 1 to 11 do // от 1ой до 11ой строчки (всего 11 коэффициентов)
Form11.Series1.AddXY(j, (StrToFloat(StringGrid1.Cells[i, j])));
i:= 2; // столбик (2ой год)
for j:= 1 to 11 do // от 1ой до 11ой строчки (всего 11 коэффициентов)
Form11.Series2.AddXY(j, (StrToFloat(StringGrid1.Cells[i, j])));
i:= 4; // столбик (3ий год)
for j:= 1 to 11 do // от 1ой до 11ой строчки (всего 11 коэффициентов)
Form11.Series3.AddXY(j, (StrToFloat(StringGrid1.Cells[i, j])));
Form11.Show;
end;
{**** Панель - Помощь ****}
procedure TForm10.Action3Execute(Sender: TObject);
Begin
ShellExecute(handle, 'open', 'helpfile.pdf', nil, nil, SW_SHOWNORMAL);
end;
{**** Панель - О программе ****}
procedure TForm10.Action4Execute(Sender: TObject);
Begin
Form22.Show;
end;
end.
2.2.7 UNIT TABL_4_GRAPH
unit Tabl_4_Graph;
Дата добавления: 2015-10-13; просмотров: 73 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Else begin | | | Interface |