Читайте также: |
|
Uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, Grids, ActnList, XPStyleActnCtrls, ActnMan,
ToolWin, ActnCtrls, ActnMenus;
Type
TForm19 = class (TForm)
StringGrid1: TStringGrid;
lbCaption: TLabel;
ActionMainMenuBar1: TActionMainMenuBar;
ActionManager2: TActionManager;
Action11: TAction;
Action12: TAction;
Action13: TAction;
procedure FormShow(Sender: TObject);
procedure StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
procedure Action11Execute(Sender: TObject);
procedure Action12Execute(Sender: TObject);
procedure Action13Execute(Sender: TObject);
procedure Shapka;
procedure Zapolnenie;
Private
Public
end;
Var
Form19: TForm19;
Implementation
uses Small_Business, PrnGridUnit, Programm, ShellAPI;
{**** Появление формы ****}
procedure TForm19.FormShow(Sender: TObject);
Begin
Shapka;
Zapolnenie;
end;
{**** Шапка таблиц ****}
procedure TForm19.Shapka;
Var
i: 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:= 0; StringGrid1.Cells[i, 0]:= ' Показатели';
inc(i); StringGrid1.Cells[i, 0]:= ' 1 год (берутся данные на начало аналогичного предыдущего периода)';
inc(i); StringGrid1.Cells[i, 0]:= ' 2 год (берутся данные на начало отчётного периода)';
inc(i); StringGrid1.Cells[i, 0]:= ' Изменения (+/-)';
inc(i); StringGrid1.Cells[i, 0]:= ' 3 год (берутся данные на конец отчётного периода)';;
inc(i); StringGrid1.Cells[i, 0]:= ' Изменения (+/-)';
i:= 1; 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]:= ' Рентабельность доходов (Кд)';
end;
{**** Заполнение таблиц ****}
procedure TForm19.Zapolnenie;
Type
T_K = Array [60..70, 1..3] of Double;
Var
i, j, m, f: Byte;
k: T_K;
Begin
// Рассчитаем коэффициенты
for i:= 1 to 3 do
Begin
k[60, i]:= b[NLOA, i] / b[TKO, i];
k[61, i]:= b[LA, i] / b[TKO, i];
k[62, i]:= (b[LA, i] + b[SVA, i]) / b[OD, i];
k[63, i]:= b[TKO, i] / b[VPr, i];
k[64, i]:= b[SS, i] / b[SA, i];
k[65, i]:= (b[SS, i] - b[SVA, i]) / b[OA, i];
k[66, i]:= b[PKZ, i] / b[SA, i];
k[67, i]:= (b[DZ, i] + b[POAV, i]) / b[SA, i];
k[68, i]:= b[CHPr, i] / b[SA, i];
k[69, i]:= b[CHPr, i] / b[OA, i];
k[70, i]:= b[CHPr, i] / b[D, i];
end;
// 1 год
i:= 3; // элемент
m:= 1; // столбец
f:= 2; StringGrid1.Cells[m, f]:= FormatFloat('0.00', k[60, i]);
inc(f); StringGrid1.Cells[m, f]:= FormatFloat('0.00', k[61, i]);
inc(f); StringGrid1.Cells[m, f]:= FormatFloat('0.00', k[62, i]);
inc(f); StringGrid1.Cells[m, f]:= FormatFloat('0.00', k[63, i]);
f:= 7; StringGrid1.Cells[m, f]:= FormatFloat('0.00', k[64, i]);
inc(f); StringGrid1.Cells[m, f]:= FormatFloat('0.00', k[65, i]);
inc(f); StringGrid1.Cells[m, f]:= FormatFloat('0.00', k[66, i]);
inc(f); StringGrid1.Cells[m, f]:= FormatFloat('0.00', k[67, i]);
f:= 12; StringGrid1.Cells[m, f]:= FormatFloat('0.00', k[68, i]);
inc(f); StringGrid1.Cells[m, f]:= FormatFloat('0.00', k[69, i]);
inc(f); StringGrid1.Cells[m, f]:= FormatFloat('0.00', k[70, i]);
// 2 год
i:= 2; // элементm
m:= 2; // столбец
f:= 2; StringGrid1.Cells[m, f]:= FormatFloat('0.00', k[60, i]);
inc(f); StringGrid1.Cells[m, f]:= FormatFloat('0.00', k[61, i]);
inc(f); StringGrid1.Cells[m, f]:= FormatFloat('0.00', k[62, i]);
inc(f); StringGrid1.Cells[m, f]:= FormatFloat('0.00', k[63, i]);
f:= 7; StringGrid1.Cells[m, f]:= FormatFloat('0.00', k[64, i]);
inc(f); StringGrid1.Cells[m, f]:= FormatFloat('0.00', k[65, i]);
inc(f); StringGrid1.Cells[m, f]:= FormatFloat('0.00', k[66, i]);
inc(f); StringGrid1.Cells[m, f]:= FormatFloat('0.00', k[67, i]);
f:= 12; StringGrid1.Cells[m, f]:= FormatFloat('0.00', k[68, i]);
inc(f); StringGrid1.Cells[m, f]:= FormatFloat('0.00', k[69, i]);
inc(f); StringGrid1.Cells[m, f]:= FormatFloat('0.00', k[70, i]);
// 3 год
i:= 1; // элементm
m:= 4; // столбец
f:= 2; StringGrid1.Cells[m, f]:= FormatFloat('0.00', k[60, i]);
inc(f); StringGrid1.Cells[m, f]:= FormatFloat('0.00', k[61, i]);
inc(f); StringGrid1.Cells[m, f]:= FormatFloat('0.00', k[62, i]);
inc(f); StringGrid1.Cells[m, f]:= FormatFloat('0.00', k[63, i]);
f:= 7; StringGrid1.Cells[m, f]:= FormatFloat('0.00', k[64, i]);
inc(f); StringGrid1.Cells[m, f]:= FormatFloat('0.00', k[65, i]);
inc(f); StringGrid1.Cells[m, f]:= FormatFloat('0.00', k[66, i]);
inc(f); StringGrid1.Cells[m, f]:= FormatFloat('0.00', k[67, i]);
f:= 12; StringGrid1.Cells[m, f]:= FormatFloat('0.00', k[68, i]);
inc(f); StringGrid1.Cells[m, f]:= FormatFloat('0.00', k[69, i]);
inc(f); StringGrid1.Cells[m, f]:= FormatFloat('0.00', k[70, i]);
// Изменения # 1
i:= 3; // элементm
j:= 2; // элементm
m:= 3; // столбец
f:= 2; StringGrid1.Cells[m, f]:= FormatFloat('0.00', k[60, i] - k[60, j]);
inc(f); StringGrid1.Cells[m, f]:= FormatFloat('0.00', k[61, i] - k[61, j]);
inc(f); StringGrid1.Cells[m, f]:= FormatFloat('0.00', k[62, i] - k[62, j]);
inc(f); StringGrid1.Cells[m, f]:= FormatFloat('0.00', k[63, i] - k[63, j]);
f:= 7; StringGrid1.Cells[m, f]:= FormatFloat('0.00', k[64, i] - k[64, j]);
inc(f); StringGrid1.Cells[m, f]:= FormatFloat('0.00', k[65, i] - k[65, j]);
inc(f); StringGrid1.Cells[m, f]:= FormatFloat('0.00', k[66, i] - k[66, j]);
inc(f); StringGrid1.Cells[m, f]:= FormatFloat('0.00', k[67, i] - k[67, j]);
f:= 12; StringGrid1.Cells[m, f]:= FormatFloat('0.00', k[68, i] - k[68, j]);
inc(f); StringGrid1.Cells[m, f]:= FormatFloat('0.00', k[69, i] - k[69, j]);
inc(f); StringGrid1.Cells[m, f]:= FormatFloat('0.00', k[70, i] - k[70, j]);
// Изменения # 2
i:= 1; // элементm
j:= 2; // элементm
m:= 5; // столбец
f:= 2; StringGrid1.Cells[m, f]:= FormatFloat('0.00', k[60, i] - k[60, j]);
inc(f); StringGrid1.Cells[m, f]:= FormatFloat('0.00', k[61, i] - k[61, j]);
inc(f); StringGrid1.Cells[m, f]:= FormatFloat('0.00', k[62, i] - k[62, j]);
inc(f); StringGrid1.Cells[m, f]:= FormatFloat('0.00', k[63, i] - k[63, j]);
f:= 7; StringGrid1.Cells[m, f]:= FormatFloat('0.00', k[64, i] - k[64, j]);
inc(f); StringGrid1.Cells[m, f]:= FormatFloat('0.00', k[65, i] - k[65, j]);
inc(f); StringGrid1.Cells[m, f]:= FormatFloat('0.00', k[66, i] - k[66, j]);
inc(f); StringGrid1.Cells[m, f]:= FormatFloat('0.00', k[67, i] - k[67, j]);
f:= 12; StringGrid1.Cells[m, f]:= FormatFloat('0.00', k[68, i] - k[68, j]);
inc(f); StringGrid1.Cells[m, f]:= FormatFloat('0.00', k[69, i] - k[69, j]);
inc(f); StringGrid1.Cells[m, f]:= FormatFloat('0.00', k[70, i] - k[70, j]);
end;
{**** Форматирование таблицы ****}
procedure TForm19.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
Var
s: String;
Flag: Cardinal;
H: Integer;
i, j, m: Byte;
Begin
{___________________Цветные строчки в нулевом столбике_________________________}
// Для показателей, характеризующих ликвидность:
i:= 0; // 0й столбик
j:= 1; // 1ая строчка
if (ACol = i) and (ARow = j) 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;
for j:= 2 to 5 do // со 2ой по 5ую строчку
Begin
if (ACol = i) and (ARow = j) 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;
// Для показателей, характеризующих финансовую устойчивость:
i:= 0; // 0й столбик
j:= 6; // 6ая строчка
if (ACol = i) and (ARow = j) 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;
for j:= 7 to 10 do // со 7ой по 10ую строчку
Begin
if (ACol = i) and (ARow = j) 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;
// Для показателей, характеризующих деловую активность:
i:= 0; // 0й столбик
j:= 11; // 11ая строчка
if (ACol = i) and (ARow = j) 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;
for j:= 12 to 15 do // со 12ой по 15ую строчку
Begin
if (ACol = i) and (ARow = j) 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;
{_________________Выделение цветом ячеек (для изменений #1 и #2)_______________}
for m:= 1 to 2 do // для того, чтобы заполнить два раза (т.е. два столбика)
Begin
// Для показателей, характеризующих ликвидность:
for j:= 2 to 5 do // от 2 до 5 строчки
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;
// Для показателей, характеризующих финансовую устойчивость:
for j:= 7 to 10 do // от 7 до 10 строчки
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;
// Для показателей, характеризующих деловую активность:
for j:= 12 to 15 do // от 12 до 15 строчки
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 TForm19.Action11Execute(Sender: TObject);
Begin
PrintGrid(StringGrid1, lbCaption);
end;
{**** Панель - Помощь ****}
procedure TForm19.Action12Execute(Sender: TObject);
Begin
ShellExecute(handle, 'open', 'helpfile.pdf', nil, nil, SW_SHOWNORMAL);
end;
{**** Панель - О программе ****}
procedure TForm19.Action13Execute(Sender: TObject);
Begin
Form22.Show;
end;
end.
2.1.3 UNIT SMALL_TABL_3
unit Small_Tabl_3;
Дата добавления: 2015-10-13; просмотров: 69 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Interface | | | Interface |