Автоматизированная система управления метеорологических станций

Автор работы: Пользователь скрыл имя, 22 Июня 2012 в 11:56, курсовая работа

Краткое описание

Центр эксплуатации объектов наземной космической инфраструктуры осуществляет метеорологическое, аэрологическое и астрономо-геодезическое обеспечение выполнения космических программ на космодроме Байконур. Метеорологическое и астрономо-геодезическое обеспечение является одним из основных видов оперативного обеспечения при выполнении космических программ, полётов авиации и имеет своей целью создание условий для обеспечения безопасности их проведения. Метеорологический комплекс создан в 2009 году на базе отделов метеорологического и астрономо-геодезического обеспечения, в связи с расширением технологических функций по направлениям метеорологического и астрономо-геодезического обеспечения подготовки и запуска всех типов РКН, проведения метеорологического мониторинга района комплекса «Байконур», обеспечения полётов авиации на комплексе «Байконур».

Содержание

Введение
Основная часть
1 Анализ объекта автоматизации и разработка ТЗ на проектирование АС
1.1 Анализ деятельности отдела метеорологического обеспечения
1.1.1 Специализированные функции
1.1.2 Направления ответственности комплекса
1.2 Анализ существующей технологии
1.3 Цель проектирования
2 Диагностический анализ объекта автоматизации
3 Разработка системного проекта и ТЗ на проектирование и ТЗ на разработку программного продукта
3.1.1 Общие сведения
3.1.2 Назначение системы
3.1.3 Требования к системе
3.1.3 Требования к системе
3.2 Разработка требований к функциям, выполняемым системой
3.2.1 Среда функционирования системы
3.2.3 Краткая характеристика системы
3.2.4 Основные решаемые задачи
3.2.5 Метеостанция АМС-2000
3.3 Нефункциональные требования
3.3.1 Практичность
3.3.2 Требования к надежности
3.4 Ограничения проектирования
3.4.1 Требования к видам обеспечения
3.4.2 Требования к языкам программирования
3.4.3 Требования к защите информации
3.5 Интерфейсы
3.5.1 Требования к элементам пользовательского интерфейса
3.5.2 Общие требования к пользовательским интерфейсам
4 Математические и эвристические модели принятия решений для проектируемой системы.
4.1 Оценка прогноза температуры воздуха
4.2 Оценка прогноза осадков
4.3 Оценка прогноза ветра
5 Разработка модели проектируемой системы
5.1 Схема сети «МЕТЕО» метеорологического комплекса «Космического центра «Южный»
5.2 Функциональные модели и модели данных проектируемой АС
5.2.1 Разработка модели
5.2.1.1 Краткая характеристика системы
6 Разработка модели базы данных
6.1 Требования к информации
6.1.1 Данные о работе системы
8 Разработка диалогового интерфейса пользователя
8 Разработка алгоритмов, реализация и отладка компонент программного обеспечения АС.
8.1.1 Структура программы сервер
8.1.2 Дополнительная информация
8.1.3 Структура программы клиент
8.2 Сетевые компоненты
8.3 Компонент TIMER
8.4 Создание Frame
Глоссарий
Заключение
Список используемых источников
Приложение А
Приложение Б
Приложение В
Приложение Г
Приложение Д
Приложение Е
Приложение Ж

Вложенные файлы: 1 файл

КП 21.doc

— 2.14 Мб (Скачать файл)

Продолжение приложения Б

  t0:=StrToInt(FormatFloat('##0',(StrToFloat(StringList.Strings[6]))));

  sLabelFX32.Caption:=(FormatFloat('##0',(StrToFloat(StringList.Strings[7]))));

  sLabelFX30.Caption:=(FormatFloat('##0.0',(StrToFloat(StringList.Strings[9]))));

  sLabelFX31.Caption:=(FormatFloat('##0.0',(StrToFloat(StringList.Strings[10]))));

  sLabelFX29.Caption:=(FormatFloat('##0',(StrToFloat(StringList.Strings[11]))));

  sLabelFX22.Caption:=(FormatFloat('##0.0',(StrToFloat(StringList.Strings[12]))));

  sLabelFX24.Caption:=(FormatFloat('##0.0',(StrToFloat(StringList.Strings[13]))));

  sLabelFX25.Caption:=(FormatFloat('##0.0',(StrToFloat(StringList.Strings[14]))));

  t01:=StrToInt(FormatFloat('##0',(StrToFloat(StringList.Strings[15]))));

  sLabelFX23.Caption:=(FormatFloat('##0',(StrToFloat(StringList.Strings[16]))));

  sLabelFX27.Caption:=(FormatFloat('##0.0',(StrToFloat(StringList.Strings[18]))));

  sLabelFX28.Caption:=(FormatFloat('##0.0',(StrToFloat(StringList.Strings[19]))));

  sLabelFX26.Caption:=(FormatFloat('##0',(StrToFloat(StringList.Strings[20]))));

  sLabelFX17.Caption:=(FormatFloat('##0.0',(StrToFloat(StringList.Strings[23]))));

  sLabelFX18.Caption:=(FormatFloat('##0',(StrToFloat(StringList.Strings[24]))));

  sLabelFX19.Caption:=(FormatFloat('##0.0',(StrToFloat(StringList.Strings[25]))));

  sLabelFX20.Caption:=(FormatFloat('###0.0',(StrToFloat(StringList.Strings[25])/3*4)));

  StringList.Free;

   }

  ax:=4;//???????? ??????? ????? ?????????

  ro1:=146;//132;//??????? ?????? ?????????

  xc:=Image1.ClientWidth div 2;

  yc:=Image1.ClientHeight div 2;

  ro:=127;//113;//?????????? ?????? ?????????

  doublebuffered:=true;//???????? ????????

  x:=round(xc+ro*sin(t*pi/180));{?????????? ?????????? ?????????? ????? ?????????}

  y:=round(yc-ro*cos(t*pi/180));

  x1:=round(xc+ro1*sin((t-ax)*pi/180));{?????????? ?????????? ??????? ????? ?????????}

  y1:=round(yc-ro1*cos((t-ax)*pi/180));

  x2:=round(xc+ro1*sin((t+ax)*pi/180));

  y2:=round(yc-ro1*cos((t+ax)*pi/180));

  dx:=round(xc+ro*sin(t1*pi/180));{?????????? ?????????? ?????????? ????? ?????????}

  dy:=round(yc-ro*cos(t1*pi/180));

  dx1:=round(xc+ro1*sin((t1-ax)*pi/180));{?????????? ?????????? ??????? ????? ?????????}

  dy1:=round(yc-ro1*cos((t1-ax)*pi/180));

  dx2:=round(xc+ro1*sin((t1+ax)*pi/180));

  Продолжение приложения Б

dy2:=round(yc-ro1*cos((t1+ax)*pi/180));

  Anemoscope(Image1,x,y,x1,y1,x2,y2,15459287,dx,dy,dx1,dy1,dx2,dy2,15459287); //?????? ?????? ????=???????

  t:=Form1.t6;

  t1:=Form1.t6_1;

  if t=360 then t:=0;

  x:=round(xc+ro*sin(t*pi/180));{?????????? ?????????? ?? ??????? ???????}

  y:=round(yc-ro*cos(t*pi/180));

  x1:=round(xc+ro1*sin((t-ax)*pi/180));

  y1:=round(yc-ro1*cos((t-ax)*pi/180));

  x2:=round(xc+ro1*sin((t+ax)*pi/180));

  y2:=round(yc-ro1*cos((t+ax)*pi/180));

  dx:=round(xc+ro*sin(t1*pi/180));{?????????? ?????????? ?????????? ????? ?????????}

  dy:=round(yc-ro*cos(t1*pi/180));

  dx1:=round(xc+ro1*sin((t1-ax)*pi/180));{?????????? ?????????? ??????? ????? ?????????}

  dy1:=round(yc-ro1*cos((t1-ax)*pi/180));

  dx2:=round(xc+ro1*sin((t1+ax)*pi/180));

  dy2:=round(yc-ro1*cos((t1+ax)*pi/180));

  Anemoscope(Image1,x,y,x1,y1,x2,y2,16744512,dx,dy,dx1,dy1,dx2,dy2,16711680); //?????? ??????

  sLabelFX21.Caption:=IntToStr(t1);

  sLabelFX35.Caption:=IntToStr(t);

end;

end.

unit Unit2;

interface

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, TeEngine, Series, ExtCtrls, TeeProcs, Chart;

type

  TForm2 = class(TForm)

    Chart1: TChart;

    Series1: TLineSeries;

    Series2: TLineSeries;

    procedure FormActivate(Sender: TObject);

  private

    { Private declarations }

Продолжение приложения Б

  public

    { Public declarations }

  end;

var

  Form2: TForm2;

implementation

uses Ussmi;

{$R *.dfm}

procedure TForm2.FormActivate(Sender: TObject);

var

  i,j:Integer;

begin

  i:=0;

  Series1.XValues.Order:= LoNone;

  for j := 1 to Form1.StringGrid1.RowCount-1 do

          begin

            Series1.AddXY(i,StrToFloat(Form1.StringGrid1.Cells[13,j]), '');

            Series2.AddXY(i,StrToFloat(Form1.StringGrid1.Cells[18,j]), '');

            i:=i+1;

         end;

end;

end.

unit Unit3;

interface

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, TeEngine, Series, ExtCtrls, TeeProcs, Chart;

type

  TForm3 = class(TForm)

    Chart1: TChart;

    Series1: TLineSeries;

    Series2: TLineSeries;

    procedure FormActivate(Sender: TObject);

  private

    { Private declarations }

  public

    Продолжение приложения Б

{ Public declarations }

  end;

var

  Form3: TForm3;

implementation

uses Ussmi;

{$R *.dfm}

procedure TForm3.FormActivate(Sender: TObject);

var

  i,j:Integer;

begin

  i:=0;

  for j := 1 to Form1.StringGrid1.RowCount-1 do

          begin

            Series1.AddXY(i,StrToFloat(Form1.StringGrid1.Cells[4,j]), '');

            Series2.AddXY(i,StrToFloat(Form1.StringGrid1.Cells[9,j]), '');

            i:=i+1;

         end;

end;

end.

unit Ussmi;

interface

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, fr1, fr2, sSkinManager, sDialogs, ExtCtrls, sPanel, fr3, fr4,

  StdCtrls, sLabel, sEdit, IdAntiFreezeBase, IdAntiFreeze, IdBaseComponent,

  IdComponent, IdTCPServer, Grids, sButton, TeeProcs, TeEngine, Chart,

  Series, Buttons, sSpeedButton;

type

  TForm1 = class(TForm)

    sSkinManager1: TsSkinManager;

    Frame11: TFrame1;

    IdTCPServer1: TIdTCPServer;

    IdAntiFreeze1: TIdAntiFreeze;

    sEdit1: TsEdit;

    sEdit2: TsEdit;

    Продолжение приложения Б

sLabel1: TsLabel;

    sLabel2: TsLabel;

    StringGrid1: TStringGrid;

    Frame21: TFrame2;

    Label1: TLabel;

    Label2: TLabel;

    sSpeedButton1: TsSpeedButton;

    procedure FormCreate(Sender: TObject);

    procedure IdTCPServer1Execute(AThread: TIdPeerThread);

    procedure Frame11sWebLabel21Click(Sender: TObject);

    procedure Frame11sWebLabel27Click(Sender: TObject);

    procedure sSpeedButton1Click(Sender: TObject);

  private

    { Private declarations }

  public

  t6,t6_1,t18,t18_1:integer;

  //s6,s18:String;

    { Public declarations }

  end;

var

  Form1: TForm1;

  //StringList:TStringList;

  implementation

uses Unit2, Unit3;

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);

begin

  IdTCPServer1.Active:=False;

  IdTCPServer1.Bindings.Clear;

  IdTCPServer1.Bindings.Add.Port:=StrToInt(sEdit2.Text);

  IdTCPServer1.Bindings.Add.IP:=sEdit1.Text;

  IdTCPServer1.Active:=True;

end;

procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);

var

              s:TStringStream;

Продолжение приложения Б

  StringList:TStringList;

  str,s6,s18:String;

  i,j:Integer;

begin

  s:=TStringStream.Create('');

              AThread.Connection.ReadStream(s);

              s.Position:=0;

  str:=s.ReadString(s.Size)+' ';

  s.Free;

 

  case StrToInt(Copy(str,1,Pos(' ',str)-1)) of

//===========================================================================================

    6:begin

         s6:=str;

         Label1.Caption:=s6;

         StringList:=TStringList.Create;

  repeat

    StringList.Add(Copy(s6,1,Pos(' ',s6)-1));

    Delete(s6,1,Pos(' ',s6));

    StringGrid1.Cells[i,StringGrid1.RowCount]:=StringList.Strings[i];

    i:=i+1;

  until s6='';

  StringGrid1.RowCount:=StringGrid1.RowCount+1;

  Frame11.sLabelFX36.Caption:=(FormatFloat('##0.0',(StrToFloat(StringList.Strings[3]))));

  Frame11.sLabelFX33.Caption:=(FormatFloat('##0.0',(StrToFloat(StringList.Strings[4]))));

  Frame11.sLabelFX34.Caption:=(FormatFloat('##0.0',(StrToFloat(StringList.Strings[5]))));

  t6:=StrToInt(FormatFloat('##0',(StrToFloat(StringList.Strings[6]))));

  Frame11.sLabelFX32.Caption:=(FormatFloat('##0',(StrToFloat(StringList.Strings[7]))));

  Frame11.sLabelFX30.Caption:=(FormatFloat('##0.0',(StrToFloat(StringList.Strings[9]))));

  Frame11.sLabelFX31.Caption:=(FormatFloat('##0.0',(StrToFloat(StringList.Strings[10]))));

  Frame11.sLabelFX29.Caption:=(FormatFloat('##0',(StrToFloat(StringList.Strings[11]))));

  Frame11.sLabelFX22.Caption:=(FormatFloat('##0.0',(StrToFloat(StringList.Strings[12]))));

  Frame11.sLabelFX24.Caption:=(FormatFloat('##0.0',(StrToFloat(StringList.Strings[13]))));

  Frame11.sLabelFX25.Caption:=(FormatFloat('##0.0',(StrToFloat(StringList.Strings[14]))));

  t6_1:=StrToInt(FormatFloat('##0',(StrToFloat(StringList.Strings[15]))));

Продолжение приложения Б

  Frame11.sLabelFX23.Caption:=(FormatFloat('##0',(StrToFloat(StringList.Strings[16]))));

  Frame11.sLabelFX27.Caption:=(FormatFloat('##0.0',(StrToFloat(StringList.Strings[18]))));

  Frame11.sLabelFX28.Caption:=(FormatFloat('##0.0',(StrToFloat(StringList.Strings[19]))));

  Frame11.sLabelFX26.Caption:=(FormatFloat('##0',(StrToFloat(StringList.Strings[20]))));

  Frame11.sLabelFX17.Caption:=(FormatFloat('##0.0',(StrToFloat(StringList.Strings[23]))));

  Frame11.sLabelFX18.Caption:=(FormatFloat('##0',(StrToFloat(StringList.Strings[24]))));

  Frame11.sLabelFX19.Caption:=(FormatFloat('##0.0',(StrToFloat(StringList.Strings[25]))));

  Frame11.sLabelFX20.Caption:=(FormatFloat('###0.0',(StrToFloat(StringList.Strings[25])/3*4)));

  StringList.Free;

       end;

//==================================================================================================

    18:begin

         s18:=str;

         Label2.Caption:=s18;

         StringList:=TStringList.Create;

  repeat

    StringList.Add(Copy(s18,1,Pos(' ',s18)-1));

    Delete(s18,1,Pos(' ',s18));

    StringGrid1.Cells[i,StringGrid1.RowCount]:=StringList.Strings[i];

    i:=i+1;

  until s18='';

  StringGrid1.RowCount:=StringGrid1.RowCount+1;

  Frame21.sLabelFX36.Caption:=(FormatFloat('##0.0',(StrToFloat(StringList.Strings[3]))));

  Frame21.sLabelFX33.Caption:=(FormatFloat('##0.0',(StrToFloat(StringList.Strings[4]))));

  Frame21.sLabelFX34.Caption:=(FormatFloat('##0.0',(StrToFloat(StringList.Strings[5]))));

  t18:=StrToInt(FormatFloat('##0',(StrToFloat(StringList.Strings[6]))));

  Frame21.sLabelFX32.Caption:=(FormatFloat('##0',(StrToFloat(StringList.Strings[7]))));

  Frame21.sLabelFX30.Caption:=(FormatFloat('##0.0',(StrToFloat(StringList.Strings[9]))));

  Frame21.sLabelFX31.Caption:=(FormatFloat('##0.0',(StrToFloat(StringList.Strings[10]))));

  Frame21.sLabelFX29.Caption:=(FormatFloat('##0',(StrToFloat(StringList.Strings[11]))));

  Frame21.sLabelFX22.Caption:=(FormatFloat('##0.0',(StrToFloat(StringList.Strings[12]))));

  Frame21.sLabelFX24.Caption:=(FormatFloat('##0.0',(StrToFloat(StringList.Strings[13]))));

  Frame21.sLabelFX25.Caption:=(FormatFloat('##0.0',(StrToFloat(StringList.Strings[14]))));

  t18_1:=StrToInt(FormatFloat('##0',(StrToFloat(StringList.Strings[15]))));

  Frame21.sLabelFX23.Caption:=(FormatFloat('##0',(StrToFloat(StringList.Strings[16]))));

Продолжение приложения Б

Frame21.sLabelFX27.Caption:=(FormatFloat('##0.0',(StrToFloat(StringList.Strings[18]))));

  Frame21.sLabelFX28.Caption:=(FormatFloat('##0.0',(StrToFloat(StringList.Strings[19]))));

  Frame21.sLabelFX26.Caption:=(FormatFloat('##0',(StrToFloat(StringList.Strings[20]))));

  Frame21.sLabelFX17.Caption:=(FormatFloat('##0.0',(StrToFloat(StringList.Strings[23]))));

  Frame21.sLabelFX18.Caption:=(FormatFloat('##0',(StrToFloat(StringList.Strings[24]))));

  Frame21.sLabelFX19.Caption:=(FormatFloat('##0.0',(StrToFloat(StringList.Strings[25]))));

  Frame21.sLabelFX20.Caption:=(FormatFloat('###0.0',(StrToFloat(StringList.Strings[25])/3*4)));

  StringList.Free;

       end;

  end;

  //str:=s.ReadString(s.Size)+' ';

  //Label2.Caption:=(sLabel11.Caption)+' '+(sLabel12.Caption); }

end;

procedure TForm1.Frame11sWebLabel21Click(Sender: TObject);

begin

  Form2.ShowModal;

end;

procedure TForm1.Frame11sWebLabel27Click(Sender: TObject);

begin

  Form3.ShowModal;

end;

procedure TForm1.sSpeedButton1Click(Sender: TObject);

begin

  IdTCPServer1.Active:=False;

  IdTCPServer1.Bindings.Clear;

  IdTCPServer1.Bindings.Add.Port:=StrToInt(sEdit2.Text);

  IdTCPServer1.Bindings.Add.IP:=sEdit1.Text;

  IdTCPServer1.Active:=True;

end;

end.

 

 

 

 

 

 

Приложение В

(Обязательное)

Рисунок 15 – интерфейс программы клиент

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Приложение Г

(листинг программы)

unit Unit1;

interface

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, CoolTrayIcon, StdCtrls, Menus, ImgList, Buttons, sEdit,

  sComboBox, sGroupBox, sSkinManager, sLabel, sSpeedButton,

  IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, Idexception, ExtCtrls,

  IdAntiFreezeBase, IdAntiFreeze, sButton, sDialogs, error_off, IniFiles;

type

  TForm1 = class(TForm)

    CoolTrayIcon1: TCoolTrayIcon;

    PopupMenu1: TPopupMenu;

    Show1: TMenuItem;

    Close1: TMenuItem;

    Min1: TMenuItem;

    ImageList1: TImageList;

    sGroupBox1: TsGroupBox;

    sGroupBox2: TsGroupBox;

    sGroupBox3: TsGroupBox;

    sComboBox1: TsComboBox;

    sComboBox2: TsComboBox;

    sGroupBox4: TsGroupBox;

    sSkinManager1: TsSkinManager;

    sLabelFX1: TsLabelFX;

    IdTCPClient1: TIdTCPClient;

    Timer1: TTimer;

    sLabelFX2: TsLabelFX;

    IdAntiFreeze1: TIdAntiFreeze;

    sComboBox3: TsComboBox;

    sGroupBox5: TsGroupBox;

    sButton1: TsButton;

    sOpenDialog1: TsOpenDialog;

    sSpeedButton1: TsSpeedButton;

    gsCatcher1: TgsCatcher;

    procedure ReadParams; // процедура чтения параметров

Продолжение приложения Г

    procedure WriteParams; // процедура записи параметров

    procedure Show1Click(Sender: TObject);

    procedure FormCreate(Sender: TObject);

    procedure Close1Click(Sender: TObject);

    procedure Min1Click(Sender: TObject);

    procedure sSpeedButton1Click(Sender: TObject);

    procedure Timer1Timer(Sender: TObject);

    procedure sButton1Click(Sender: TObject);

    procedure FormClose(Sender: TObject; var Action: TCloseAction);

  private

    { Private declarations }

  public

    ps_T:String;

    { Public declarations }

  end;

var

  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.ReadParams;

var

  IniFile:TIniFile; // объявление переменной, через которую будут обрабатываться данные

begin

  IniFile:=TIniFile.Create('ssmd.ini'); // создаем переменную

  Form1.Top:=IniFile.ReadInteger('FORM1','Form1Top',Form1.Top); // верхнее положение окна

  Form1.Left:=IniFile.ReadInteger('FORM1','Form1Left',Form1.Left); // левое положение окна

  Form1.ps_T:=IniFile.ReadString('VAR','FName',Form1.ps_T);

  //Form1.Width:=IniFile.ReadInteger('FORM1','Form1Width',Form1.Width); // ширина

  //Edit1.Text:=IniFile.ReadString('FORM1','Edit1Text',Edit1.Text); // текст в Edit1

ComboBox1.ItemIndex:=IniFile.ReadInteger('FORM1','sComboBox1ItemIndex',sComboBox1.ItemIndex); // выбранный пункт

sComboBox2.ItemIndex:=IniFile.ReadInteger('FORM1','sComboBox2ItemIndex',sComboBox2.ItemIndex);

sComboBox3.ItemIndex:=IniFile.ReadInteger('FORM1','sComboBox3ItemIndex',sComboBox3.ItemIndex);

  IniFile.Free; // если сами создаем, то сами уничтожаем.

end;

 

Продолжение приложения Г

procedure TForm1.WriteParams;

var

  IniFile:TIniFile;

begin

  IniFile:=TIniFile.Create('ssmd.ini');

  IniFile.WriteInteger('FORM1','Form1Top',Form1.Top);

  IniFile.WriteInteger('FORM1','Form1Left',Form1.Left);

  IniFile.WriteString('VAR','FName',Form1.ps_T);

  //IniFile.WriteInteger('FORM1','Form1Width',Form1.Width);

  //IniFile.WriteString('FORM1','Edit1Text',Edit1.Text);

  IniFile.WriteInteger('FORM1','sComboBox1ItemIndex',sComboBox1.ItemIndex);

  IniFile.WriteInteger('FORM1','sComboBox2ItemIndex',sComboBox2.ItemIndex);

  IniFile.WriteInteger('FORM1','sComboBox3ItemIndex',sComboBox3.ItemIndex);

  IniFile.Free;

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

  ReadParams;

  Application.CreateHandle;

  ShowWindow(Application.Handle, SW_HIDE);

  Application.ShowMainForm := FALSE;

  Form1.Min1.Enabled:=False;

end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);

begin

  WriteParams;

end;

procedure TForm1.Show1Click(Sender: TObject);

begin

  Application.CreateHandle;

  Application.ShowMainForm:=true;;

  CoolTrayIcon1.ShowMainForm;

  ShowWindow(Application.Handle, SW_HIDE);

  Form1.Show1.Enabled:=False;

  Form1.Min1.Enabled:=True;

end;

Продолжение приложения Г

procedure TForm1.Min1Click(Sender: TObject);

begin

  Application.Minimize;

  Cooltrayicon1.HideMainForm;

Информация о работе Автоматизированная система управления метеорологических станций