unit fs02iopCln_01_main;

interface

uses
  fs02iop_00_lib,

  //fs02iopCln_03_ClnClasses,
  fs02iopCln_02_ClnModule,

  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls, Vcl.Buttons,
  Vcl.Grids;

type
  TForm1 = class(TForm)
    Panel_Bottom: TPanel;
    LabelDT: TLabel;
    LabelPath: TLabel;
    Panel_Top: TPanel;
    Panel_Main: TPanel;
    Timer1: TTimer;
    Label_ActorName: TLabel;
    GroupBox1: TGroupBox;
    Panel1: TPanel;
    sbScrList_Get: TSpeedButton;
    Splitter1: TSplitter;
    lbScr: TListBox;
    GroupBox2: TGroupBox;
    GroupBox3: TGroupBox;
    lbActList: TListBox;
    Panel2: TPanel;
    Splitter2: TSplitter;
    sbAction: TSpeedButton;
    Panel3: TPanel;
    GroupBox4: TGroupBox;
    Memo_Data_Need: TMemo;
    GroupBox5: TGroupBox;
    Memo_Data_Ret: TMemo;
    Splitter3: TSplitter;
    procedure Timer1Timer(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure sbScrList_GetClick(Sender: TObject);
    procedure sbActionClick(Sender: TObject);
  private
    { Private declarations }
    fItsFirst:boolean;

  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  MainDir:=ExtractFilePath(ParamStr(0));
  fItsFirst:=true;

  LabelPath.Caption:=MainDir;
  Timer1.Enabled:=true;
end;

procedure TForm1.sbScrList_GetClick(Sender: TObject);
begin
  Application.ProcessMessages;
  Memo_Data_Ret.Lines.Clear;
  Memo_Data_Need.Lines.Clear;
  lbScr.Items.Clear;
  Application.ProcessMessages;
  Screen.Cursor:=crHourGlass;
  TRY
    lbScr.Items.Text:=ClientModule1.ServerMethods1Client.FS_Scripts_List;
  FINALLY
    Screen.Cursor:=crDefault;
  END;
end;

procedure TForm1.sbActionClick(Sender: TObject);
Var
  sMnemo:string;
begin
  Application.ProcessMessages;
  if lbScr.ItemIndex>=0 then begin
     if lbActList.ItemIndex>=0 then begin
        sMnemo:=trim(lbScr.Items.Names[lbScr.ItemIndex]);
        if sMnemo<>'' then begin
           if (lbActList.ItemIndex in [0..2]) then begin
              Memo_Data_Ret.Lines.Clear;
           end;
           Application.ProcessMessages;
           Screen.Cursor:=crHourGlass;
           TRY
             //----------------------------------------
             if lbActList.ItemIndex=0 then begin
                //ОписАние скрипта получить
                Memo_Data_Ret.Lines.Text:=ClientModule1.ServerMethods1Client.FS_Script_Info(sMnemo);
             end;
             //----------------------------------------
             //----------------------------------------
             if lbActList.ItemIndex=1 then begin
                //Перечень необходимых (для расчета) данных получить
                Memo_Data_Need.Lines.Text:=ClientModule1.ServerMethods1Client.FS_Script_ParamsIn(sMnemo);
             end;
             //----------------------------------------
             //----------------------------------------
             if lbActList.ItemIndex=2 then begin
                //Перечень возвращаемых данных получить
                Memo_Data_Ret.Lines.Text:=ClientModule1.ServerMethods1Client.FS_Script_ParamsOut(sMnemo);
             end;
             //----------------------------------------
             //----------------------------------------
             if lbActList.ItemIndex=3 then begin
                //Скрипт выполнить
                Memo_Data_Ret.Lines.Text:=ClientModule1.ServerMethods1Client.FS_Script_Execute(sMnemo,
                                                                                               Memo_Data_Need.Lines.Text,
                                                                                               Memo_Data_Ret.Lines.Text
                                                                                              );
             end;
             //----------------------------------------
           FINALLY
             Screen.Cursor:=crDefault;
           END;
        end;
     end;
  end;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Timer1.Enabled:=false;
  LabelDT.Caption:=DateTimeToStr(NOW);
  if fItsFirst then begin
     Timer1.Interval:=1000;
     fItsFirst:=false;
  end;
  Timer1.Enabled:=true;
end;

end.