Как разобраться с поведением контролллов?

Общие вопросы программирования, алгоритмы и т.п.

Модератор: Модераторы

Как разобраться с поведением контролллов?

Сообщение Logos300 » 06.01.2020 08:22:40

Приветствую!
Использую Lazarus 2.0.6
Пишу программу для загрузки цифровых сертификатов из интернета.
Проблема в том, что когда я на вкладке расписание ставлю флажок "Включить расписание" (chbActivateSheduler), выбираю радиокнопку "Однократный запуск" (rgChooseLaunchVariant.ItemIndex=0) и указываю в сооветствующей группе на контролле выбора даты запуска (dtpOnceLaunchDate) дату ранее настоящей, у меня флажок "Включить расписание" и обе группы - Выбор однократного и многократного запуска загрузки - становятся недоступны.

Вот код:

Код: Выделить всё
unit unMain;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ExtCtrls, Menus,
  ComCtrls, StdCtrls, DateTimePicker, IdHTTP, Types, IdComponent, inifiles,
  windows;

type

  { TfmCer_Downloader_1_1 }

  TfmCer_Downloader_1_1 = class(TForm)
    ApplicationProperties1: TApplicationProperties;
    bBrowse: TButton;
    bCerDownload: TButton;
    bSaveSettings: TButton;
    bLoadSettings: TButton;
    bClearPathToDownload: TButton;
    chbUseProxy: TCheckBox;
    chbBasicAuth: TCheckBox;
    chbActivateSheduler: TCheckBox;
    cbPeriod: TComboBox;
    dtpOnceLaunchDate: TDateTimePicker;
    dtpOnceLaunchTime: TDateTimePicker;
    dtpManyLaunchDate: TDateTimePicker;
    dtpManyLaunchTime: TDateTimePicker;
    edInterval: TEdit;
    edProxyServer: TEdit;
    edProxyPort: TEdit;
    edProxyUser: TEdit;
    edProxyPassword: TEdit;
    edPathToDownload: TEdit;
    gbOnceLaunch: TGroupBox;
    gbManyLaunch: TGroupBox;
    IdHTTP: TIdHTTP;
    Label1: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    Label13: TLabel;
    Label14: TLabel;
    Label15: TLabel;
    lbManyLaunchPriorDate: TLabel;
    lbManyLaunchBeginDate: TLabel;
    lbManyLaunchPeriod: TLabel;
    Label8: TLabel;
    lbManyLaunchNextDate: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    lbOnceLaunchStatus: TLabel;
    Label9: TLabel;
    lbProxyPassword: TLabel;
    lbProxyUser: TLabel;
    lbProxyPort: TLabel;
    lbProxyServer: TLabel;
    mLog: TMemo;
    miExit: TMenuItem;
    miAbout: TMenuItem;
    pcTools: TPageControl;
    ppMenu: TPopupMenu;
    pbDownloadProgress: TProgressBar;
    rgChooseLaunchVariant: TRadioGroup;
    sddSelectDir: TSelectDirectoryDialog;
    ShdTimer: TTimer;
    tsLog: TTabSheet;
    tsDownloading: TTabSheet;
    tsProxy: TTabSheet;
    tsShedulder: TTabSheet;
    tiTrayIcon: TTrayIcon;
    UpDwn: TUpDown;
    procedure bBrowseClick(Sender: TObject);
    procedure bCerDownloadClick(Sender: TObject);
    procedure bClearPathToDownloadClick(Sender: TObject);
    procedure bLoadSettingsClick(Sender: TObject);
    procedure bSaveSettingsClick(Sender: TObject);
    procedure chbActivateShedulerChange(Sender: TObject);
    procedure chbUseProxyChange(Sender: TObject);
    procedure FormActivate(Sender: TObject);
    procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
    procedure FormCreate(Sender: TObject);
    procedure IdHTTPWork(ASender: TObject; AWorkMode: TWorkMode;
      AWorkCount: Int64);
    procedure IdHTTPWorkBegin(ASender: TObject; AWorkMode: TWorkMode;
      AWorkCountMax: Int64);
    procedure IdHTTPWorkEnd(ASender: TObject; AWorkMode: TWorkMode);
    procedure miExitClick(Sender: TObject);
    procedure rgChooseLaunchVariantClick(Sender: TObject);
    procedure ShdTimerTimer(Sender: TObject);
    procedure tiTrayIconClick(Sender: TObject);
    procedure tsLogShow(Sender: TObject);
  private

  public

  end;

var
  fmCer_Downloader_1_1: TfmCer_Downloader_1_1;

implementation

{$R *.lfm}

{ TfmCer_Downloader_1_1 }

// Процедура недопущения запуска более одной копии программы
Procedure OnlyOne();
Begin
    CreateMutex(Nil, True, 'CER_Downloader_1.1');

    If GetLastError <> 0 Then
    Begin
      Halt;
    End;
End;

procedure TfmCer_Downloader_1_1.FormCreate(Sender: TObject);
begin
  tiTrayIcon.Show;
  fmCer_Downloader_1_1.WindowState:=wsMinimized;
  //Application.MainForm.Hide;
  // Настройка для расписания
  UpDwn.Associate:=edInterval;
  UpDwn.Min:=1;
  UpDwn.Max:=31;
  UpDwn.Position:=1;
  edInterval.Refresh;


  // Запсук таймера
  ShdTimer.Enabled:=true;
  // недопущение запуска более одной копии программы
  OnlyOne();
end;

procedure TfmCer_Downloader_1_1.IdHTTPWork(ASender: TObject;
  AWorkMode: TWorkMode; AWorkCount: Int64);
begin
  pbDownloadProgress.Position:=pbDownloadProgress.Position+AWorkCount;
end;

procedure TfmCer_Downloader_1_1.IdHTTPWorkBegin(ASender: TObject;
  AWorkMode: TWorkMode; AWorkCountMax: Int64);
begin
  pbDownloadProgress.Max:=AWorkCountMax;

end;

procedure TfmCer_Downloader_1_1.IdHTTPWorkEnd(ASender: TObject;
  AWorkMode: TWorkMode);
begin
  pbDownloadProgress.Position:=0;
end;

procedure TfmCer_Downloader_1_1.miExitClick(Sender: TObject);
begin
  halt;
end;

procedure TfmCer_Downloader_1_1.rgChooseLaunchVariantClick(Sender: TObject);
begin
  if rgChooseLaunchVariant.ItemIndex=0 then
   begin
     gbOnceLaunch.Enabled:=true;
     gbManyLaunch.Enabled:=false;
   end
  else
   begin
     gbOnceLaunch.Enabled:=false;
     gbManyLaunch.Enabled:=true;
   end;
end;

// ПРОЦЕДУРА ТИКАНЬЯ ТАЙМЕРА И ПРИ НЕОБХОДИМОСТИ - ЗАПУСК ЗАГРУЗКИ, ЕСЛИ НАСТРОЕНО РАСПИСАНИЕ
procedure TfmCer_Downloader_1_1.ShdTimerTimer(Sender: TObject);
var
  NowMoment: string;
  Ini: TIniFile;
begin
  if chbActivateSheduler.Checked=true then
   begin
    // Для однокртного запуска
    if gbOnceLaunch.Enabled=true then
      begin
        if (lbOnceLaunchStatus.Caption<>'<не задано>') and ((lbOnceLaunchStatus.Caption<>'<запуск был выполнен>')) then
         begin
           NowMoment:=DateToStr(now) + ' ' + TimeToStr(Time);

           if NowMoment=trim(lbOnceLaunchStatus.Caption) then
            begin
              bCerDownloadClick(self);
              lbOnceLaunchStatus.Caption:='Выполнено: ' + lbOnceLaunchStatus.Caption;
              Ini:=TiniFile.Create(extractfilepath(paramstr(0))+'\settings.ini');
              Ini.WriteString('Sheduler', 'Status', 'Done');
              Ini.Free;
            end;
         end;
      end;

      // для многократного запуска
      if gbManyLaunch.Enabled=true then
       begin
         //
       end;
   end;
end;

procedure TfmCer_Downloader_1_1.FormClose(Sender: TObject;
  var CloseAction: TCloseAction);
begin
  //fmCer_Downloader_1_1.WindowState:=wsMinimized;
  fmCer_Downloader_1_1.Visible:=false;
  fmCer_Downloader_1_1.hide;
  tiTrayIcon.Visible:=true;
  Abort;
end;

procedure TfmCer_Downloader_1_1.bBrowseClick(Sender: TObject);
begin
  if sddSelectDir.Execute then
     begin
       if Length(sddSelectDir.FileName)<>3 then
          edPathToDownload.Text:=sddSelectDir.FileName + '\'
       else
          edPathToDownload.Text:=sddSelectDir.FileName;
     end;
end;

// Процедура скачки сертификатов из Интернета без прокси и с ним
procedure TfmCer_Downloader_1_1.bCerDownloadClick(Sender: TObject);
var
  url, r: WideString;
  i,j: LongInt;
  Stream: TMemoryStream;
  LogFile: TextFile;
begin

  // Проверка на задание пути для скачки сертификатов
  if edPathToDownload.Text='' then
  begin
    MessageDlg('Предупреждение','Не выбрана папка для сохранения цифровых сертификатов!', mtWarning, [mbOK], 0);
    exit;
  end;

  try
     begin

               // скачка без прокси
               if chbUseProxy.Checked=false then
               begin
                     // Сброс параметров прокси
                     idHTTP.ProxyParams.Clear;

                     // Скачка сертификата №1: http://rostelecom.ru/cdp/guc_gost12.crl
                      Stream:=TMemoryStream.Create;
                      url:='http://rostelecom.ru/cdp/guc_gost12.crl';
                      for i:=1 to length(url) do
                      begin
                      if url[i]='.' then
                      begin
                      j:=i;
                      end;
                      end;
                      r:=copy(url,j+1,length(url));
                      IdHTTP.Get(url,Stream);
                      Stream.SaveToFile(edPathToDownload.Text + 'guc_gost12.'+r);
                      Stream.Free;

                      // Скачка сертификата №2: http://reg1.sudrf.ru/CDP/4efd611cd8b8abe6ff127012b58d22b91061086c.crl
                      Stream:=TMemoryStream.Create;
                      url:='http://reg1.sudrf.ru/CDP/4efd611cd8b8abe6ff127012b58d22b91061086c.crl';
                      for i:=1 to length(url) do
                      begin
                      if url[i]='.' then
                      begin
                      j:=i;
                      end;
                      end;
                      r:=copy(url,j+1,length(url));
                      IdHTTP.Get(url,Stream);
                      Stream.SaveToFile(edPathToDownload.Text + '4efd611cd8b8abe6ff127012b58d22b91061086c.'+r);
                      Stream.Free;

                      // Скачка сертификата №3: http://iac.cdep.ru/ca/crl/67067459EFE0AB59F53CBB7D67C39D8B1C0D2511.crl
                      Stream:=TMemoryStream.Create;
                      url:='http://iac.cdep.ru/ca/crl/67067459EFE0AB59F53CBB7D67C39D8B1C0D2511.crl';
                      for i:=1 to length(url) do
                      begin
                      if url[i]='.' then
                      begin
                      j:=i;
                      end;
                      end;
                      r:=copy(url,j+1,length(url));
                      IdHTTP.Get(url,Stream);
                      Stream.SaveToFile(edPathToDownload.Text + '67067459EFE0AB59F53CBB7D67C39D8B1C0D2511.'+r);
                      Stream.Free;

                     // Запись в лог об успехе операции
                                if FileExists(ExtractFilePath(ParamStr(0)) + '\log.log') then
                                begin
                                  AssignFile(LogFile, ExtractFilePath(ParamStr(0)) + '\log.log');
                                  Append(LogFile);
                                  WriteLn(LogFile, DateToStr(Now) + ' ' + TimeToStr(Now) + ': ' + 'Загрузка сертификатов прошла успешно!');
                                  CloseFile(LogFile);
                                end
                              else
                                begin
                                   AssignFile(LogFile, ExtractFilePath(ParamStr(0)) + '\log.log');
                                   Rewrite (LogFile);
                                   WriteLn(LogFile, DateToStr(Now) + ' ' + TimeToStr(Now) + ': ' + 'Загрузка сертификатов прошла успешно!');
                                   CloseFile(LogFile);
                                end;

               end
               else
               begin
                    // Скачать с прокси
                    // Предварительная настройка прокси
                      idHTTP.ProxyParams.ProxyServer:=trim(edProxyServer.Text);
                      idHTTP.ProxyParams.ProxyPort:=StrToInt(trim(edProxyPort.Text));
                      idHTTP.ProxyParams.ProxyUsername:=trim(edProxyUser.Text);
                      idHTTP.ProxyParams.ProxyPassword:=trim(edProxyPassword.Text);
                      idHTTP.ProxyParams.BasicAuthentication:=chbBasicAuth.Checked;

                      // Скачка сертификата №1: http://rostelecom.ru/cdp/guc_gost12.crl
                      Stream:=TMemoryStream.Create;
                      url:='http://rostelecom.ru/cdp/guc_gost12.crl';
                      for i:=1 to length(url) do
                      begin
                      if url[i]='.' then
                      begin
                      j:=i;
                      end;
                      end;
                      r:=copy(url,j+1,length(url));
                      IdHTTP.Get(url,Stream);
                      Stream.SaveToFile(edPathToDownload.Text + 'guc_gost12.'+r);
                      Stream.Free;

                      // Скачка сертификата №2: http://reg1.sudrf.ru/CDP/4efd611cd8b8abe6ff127012b58d22b91061086c.crl
                      Stream:=TMemoryStream.Create;
                      url:='http://reg1.sudrf.ru/CDP/4efd611cd8b8abe6ff127012b58d22b91061086c.crl';
                      for i:=1 to length(url) do
                      begin
                      if url[i]='.' then
                      begin
                      j:=i;
                      end;
                      end;
                      r:=copy(url,j+1,length(url));
                      IdHTTP.Get(url,Stream);
                      Stream.SaveToFile(edPathToDownload.Text + '4efd611cd8b8abe6ff127012b58d22b91061086c.'+r);
                      Stream.Free;

                      // Скачка сертификата №3: http://iac.cdep.ru/ca/crl/67067459EFE0AB59F53CBB7D67C39D8B1C0D2511.crl
                      Stream:=TMemoryStream.Create;
                      url:='http://iac.cdep.ru/ca/crl/67067459EFE0AB59F53CBB7D67C39D8B1C0D2511.crl';
                      for i:=1 to length(url) do
                      begin
                      if url[i]='.' then
                      begin
                      j:=i;
                      end;
                      end;
                      r:=copy(url,j+1,length(url));
                      IdHTTP.Get(url,Stream);
                      Stream.SaveToFile(edPathToDownload.Text + '67067459EFE0AB59F53CBB7D67C39D8B1C0D2511.'+r);
                      Stream.Free;

                     // Запись в лог об успехе операции
                                if FileExists(ExtractFilePath(ParamStr(0)) + '\log.log') then
                                begin
                                  AssignFile(LogFile, ExtractFilePath(ParamStr(0)) + '\log.log');
                                  Append(LogFile);
                                  WriteLn(LogFile, DateToStr(Now) + ' ' + TimeToStr(Now) + ': ' + 'Загрузка сертификатов прошла успешно!');
                                  CloseFile(LogFile);
                                end
                              else
                                begin
                                   AssignFile(LogFile, ExtractFilePath(ParamStr(0)) + '\log.log');
                                   Rewrite (LogFile);
                                   WriteLn(LogFile, DateToStr(Now) + ' ' + TimeToStr(Now) + ': ' + 'Загрузка сертификатов прошла успешно!');
                                   CloseFile(LogFile);
                                end;



               end;

     end;

except
      on e:Exception do
         begin
            //Вставляем строчку об ошибке в лог
                    if FileExists(ExtractFilePath(ParamStr(0)) + '\log.log') then
                      begin
                        AssignFile(LogFile, ExtractFilePath(ParamStr(0)) + '\log.log');
                        Append(LogFile);
                        WriteLn(LogFile, DateToStr(Now) + ' ' + TimeToStr(Now) + ': ' + 'Возникла ошибка: ' + E.Message);
                        CloseFile(LogFile);
                      end
                    else
                      begin
                         AssignFile(LogFile, ExtractFilePath(ParamStr(0)) + '\log.log');
                         Rewrite (LogFile);
                         WriteLn(LogFile, DateToStr(Now) + ' ' + TimeToStr(Now) + ': ' + 'Возникла ошибка: ' + E.Message);
                         CloseFile(LogFile);
                      end;

                      Stream.Free;
         end;


end;

end;

procedure TfmCer_Downloader_1_1.bClearPathToDownloadClick(Sender: TObject);
begin
  edPathToDownload.Clear;
end;

// Процедура загрузки настроек
procedure TfmCer_Downloader_1_1.bLoadSettingsClick(Sender: TObject);
var
  ini: TIniFile;
  // Для однократного запуска
  TaskTime: string;
  Status: string;
begin
  Ini:=TiniFile.Create(extractfilepath(paramstr(0))+'\settings.ini');
  // Грузим из ini-файла секцию основных настроек, General
  edPathToDownload.Text:=ini.ReadString('General','Folder', trim(edPathToDownload.Text));
  chbUseProxy.Checked:=Ini.ReadBool('General','UseProxy', false);
  chbActivateSheduler.Checked:=ini.ReadBool('General', 'UseSheduler', false);
  // Грузим из секции Прокси
  edProxyServer.Text:=Ini.ReadString('Proxy','ProxyServer', '');
  edProxyPort.Text:=IntToStr(Ini.ReadInteger('Proxy','ProxyPort', 0));
  edProxyUser.Text:=Ini.ReadString('Proxy','ProxyUser', '');
  edProxyPassword.Text:=Ini.ReadString('Proxy','ProxyPassword', '');
  chbBasicAuth.Checked:=Ini.ReadBool('Proxy','BasicAuth', false);
  // Грузим из секции расписания
  if ini.ReadBool('General', 'UseSheduler', false)=true then
    begin
     // Активируем галочку - использовать расписание
     chbActivateSheduler.Checked:=true;

     if ini.SectionExists('Sheduler') then
       begin
         TaskTime:=ini.ReadString('Sheduler', 'TaskTime', '');
         Status:=ini.ReadString('Sheduler', 'Status', '');

         if (TaskTime='') or (Status='') then
           exit;
         // Для однакратного запуска
         if TaskTime='Once' then
           begin
             chbActivateSheduler.Checked:=true;
             rgChooseLaunchVariant.ItemIndex:=0;
             dtpOnceLaunchDate.Date:=now;
             dtpOnceLaunchTime.Time:=time;
             // Обрубаем контроллы для многократного запуска
             dtpManyLaunchDate.Date:=now;
             dtpManyLaunchTime.Time:=time;
             UpDwn.Position:=1;
             edInterval.Refresh;
             cbPeriod.ItemIndex:=0;
             lbManyLaunchBeginDate.Caption:='<не задано>';
             lbManyLaunchPriorDate.Caption:='<не задано>';
             lbManyLaunchNextDate.Caption:='<не задано>';
             lbManyLaunchPeriod.Caption:='<не задано>';
             gbManyLaunch.Enabled:=false;

             // Отслеживаем выполненность/невыполненность однократного запуска
             if Status='Not yet' then
               begin
                 lbOnceLaunchStatus.Caption:=ini.ReadString('Sheduler', 'Date', '') + ' ' + ini.ReadString('Sheduler', 'Time', '');
                 ShdTimer.Enabled:=true;
               end;

             if Status='Done' then
               begin
                 lbOnceLaunchStatus.Caption:='<запуск был выполнен>';
               end;
           end;

         // Для многократного запуска
         if TaskTime='Many' then
           begin

           end;
       end
       else
           // Если секции Sheduler не существует, тогда обрубаем контролл использовать расписание
           begin
              chbActivateSheduler.Checked:=false;
              rgChooseLaunchVariant.ItemIndex:=0;
              rgChooseLaunchVariant.Enabled:=false;

           end;
    end
    else
        begin
           //chbActivateSheduler.Checked:=false;
           //rgChooseLaunchVariant.ItemIndex:=0;
        end;


end;

// Процедура сохранения настроек программы
procedure TfmCer_Downloader_1_1.bSaveSettingsClick(Sender: TObject);
var
  ini: TIniFile;
  SelectedMoment: string;
  NowMoment: string;

begin
  Ini:=TiniFile.Create(extractfilepath(paramstr(0))+'\settings.ini');
  Ini.WriteString('General','Folder', trim(edPathToDownload.Text));

  if chbUseProxy.Checked=true then
  begin
    Ini.WriteBool('General','UseProxy', chbUseProxy.Checked);
    Ini.WriteString('Proxy','ProxyServer', trim(edProxyServer.Text));

    try
       Ini.WriteInteger('Proxy','ProxyPort', StrToInt(trim(edProxyPort.Text)));
    except
        begin
           MessageDlg('Предупреждение','Не удается сохранить данные поля "Порт"! Вероятно, Вы ввели в это поле не численное значение!', mtWarning, [mbOK],0);
           ini.Free;
           exit;
        end;
    end;


    Ini.WriteString('Proxy','ProxyUser', trim(edProxyUser.Text));
    Ini.WriteString('Proxy','ProxyPassword', trim(edProxyPassword.Text));
    Ini.WriteBool('Proxy','BasicAuth', chbBasicAuth.Checked);
  end
  else
    begin
      Ini.WriteBool('General','UseProxy', false);
      Ini.WriteString('Proxy','ProxyServer', '');
      Ini.WriteInteger('Proxy','ProxyPort', 0);
      Ini.WriteString('Proxy','ProxyUser', '');
      Ini.WriteString('Proxy','ProxyPassword', '');
      Ini.WriteBool('Proxy','BasicAuth', false);
    end;

  //Сохранение настроек расписания


    // Сохранения факта выбора опцции - Расписание
    if chbActivateSheduler.Checked=true then
       ini.WriteBool('General', 'UseSheduler', true)
    else
       begin
         ini.WriteBool('General', 'UseSheduler', false);

         MessageDlg('Информация', 'Настройки сохранены!', mtInformation, [mbOK], 0);
         exit;
       end;

    // Для однократного запуска
    if (chbActivateSheduler.Checked=true) and (rgChooseLaunchVariant.ItemIndex=0) then
    begin
           SelectedMoment:=DateToStr(dtpOnceLaunchDate.Date) + ' ' + TimeToStr(dtpOnceLaunchTime.Time);
           NowMoment:=DateToStr(now)  + ' ' + TimeToStr(time);


           if StrToDateTime(SelectedMoment) <= StrToDateTime(NowMoment) then
           begin
             MessageDlg('Предупреждение', 'Настройка однократной загрузки. Можно задать дату и время загрузки только большие чем текущие дата и время!', mtWarning, [mbOK], 0);
             dtpOnceLaunchDate.Date:=now;
             dtpOnceLaunchTime.Time:=time;
             exit;
           end;

                if ini.SectionExists('Sheduler') then
                   ini.EraseSection('Sheduler');


                Ini.WriteString('Sheduler', 'TaskTime', 'Once');
                ini.WriteString('Sheduler', 'Date', DateToStr(dtpOnceLaunchDate.Date));
                ini.WriteString('Sheduler', 'Time', TimeToStr(dtpOnceLaunchTime.Time));
                lbOnceLaunchStatus.Caption:=ini.ReadString('Sheduler', 'Date', '') + ' ' + ini.ReadString('Sheduler', 'Time', '');


                // Заносим статус выполнения задания в ini-файл
                NowMoment:=DateToStr(now) + ' ' + TimeToStr(Time);
                if StrToDateTime(lbOnceLaunchStatus.Caption) > StrToDateTime(NowMoment) then
                   ini.WriteString('Sheduler', 'Status', 'Not yet');

                // Обрубаем остальные контроллы для расписания
                // Для однократного запуска
                {chbActivateSheduler.Checked:=true;
                rgChooseLaunchVariant.Enabled:=true;
                rgChooseLaunchVariant.ItemIndex:=0;}

                dtpOnceLaunchDate.Date:=now;
                dtpOnceLaunchTime.Time:=time;

                // Для многократного запуска
                dtpManyLaunchDate.Date:=now;
                dtpManyLaunchTime.Time:=time;
                UpDwn.Position:=1;
                edInterval.Refresh;
                cbPeriod.ItemIndex:=0;
                lbManyLaunchBeginDate.Caption:='<не задано>';
                lbManyLaunchPriorDate.Caption:='<не задано>';
                lbManyLaunchNextDate.Caption:='<не задано>';
                lbManyLaunchPeriod.Caption:='<не задано>';
     end;


    // Для многократного запуска
    { if (chbActivateSheduler.Checked=true) and (rgChooseLaunchVariant.ItemIndex=1) then
    begin
      //




    end;}



   MessageDlg('Информация', 'Настройки сохранены!', mtInformation, [mbOK], 0);

   ini.Free;

end;

// Процедура активации опции Загрузки по расписанию: однократно/ многократно...
procedure TfmCer_Downloader_1_1.chbActivateShedulerChange(Sender: TObject);
begin
  if chbActivateSheduler.Checked=true then
  begin
     rgChooseLaunchVariant.Enabled:=true;

     rgChooseLaunchVariant.ItemIndex:=0;

       gbOnceLaunch.Enabled:=true;
       dtpOnceLaunchDate.Date:=now;
       dtpOnceLaunchTime.Time:=Time;
       gbManyLaunch.Enabled:=false;
  end;

  if chbActivateSheduler.Checked=false then
  begin
     rgChooseLaunchVariant.Enabled:=false;

     rgChooseLaunchVariant.ItemIndex:=0;

       gbOnceLaunch.Enabled:=false;
       dtpOnceLaunchDate.Date:=now;
       dtpOnceLaunchTime.Time:=Time;
       gbManyLaunch.Enabled:=false;
  end;


end;

procedure TfmCer_Downloader_1_1.chbUseProxyChange(Sender: TObject);
begin
  if chbUseProxy.Checked=true then
     begin
         // делаем контроллы доступными
         lbProxyServer.Enabled:=true;
         lbProxyPort.Enabled:=true;
         lbProxyUser.Enabled:=true;
         lbProxyPassword.Enabled:=true;
         chbBasicAuth.Enabled:=true;
         edProxyServer.Enabled:=true;
         edProxyPort.Enabled:=true;
         edProxyUser.Enabled:=true;
         edProxyPassword.Enabled:=true;
         //edProxyServer.SetFocus;
     end
     else
     begin
        // делаем контроллы недоступными
         lbProxyServer.Enabled:=false;
         lbProxyPort.Enabled:=false;
         lbProxyUser.Enabled:=false;
         lbProxyPassword.Enabled:=false;
         chbBasicAuth.Enabled:=false;
         edProxyServer.Enabled:=false;
         edProxyPort.Enabled:=false;
         edProxyUser.Enabled:=false;
         edProxyPassword.Enabled:=false;
     end;
end;

// Процедура смены даты для настройки однократного запуска




procedure TfmCer_Downloader_1_1.FormActivate(Sender: TObject);
begin
  bLoadSettingsClick(self);
  // Отображение Прокси-контроллов
  if chbUseProxy.Checked=true then
  begin
    lbProxyServer.Enabled:=true;
    lbProxyPort.Enabled:=true;
    lbProxyUser.Enabled:=true;
    lbProxyPassword.Enabled:=true;
    chbBasicAuth.Enabled:=true;

    edProxyServer.Enabled:=true;
    edProxyPort.Enabled:=true;
    edProxyUser.Enabled:=true;
    edProxyPassword.Enabled:=true;
  end
  else
    begin
      lbProxyServer.Enabled:=false;
      lbProxyPort.Enabled:=false;
      lbProxyUser.Enabled:=false;
      lbProxyPassword.Enabled:=false;

      edProxyServer.Enabled:=false;
      edProxyPort.Enabled:=false;
      edProxyUser.Enabled:=false;
      edProxyPassword.Enabled:=false;
      chbBasicAuth.Enabled:=false;
    end;

  // Отображение контроллов Расписания
  chbActivateShedulerChange(self);
end;

procedure TfmCer_Downloader_1_1.tiTrayIconClick(Sender: TObject);
begin
  fmCer_Downloader_1_1.Show;
  fmCer_Downloader_1_1.Top:=round(Screen.Height/4);
  fmCer_Downloader_1_1.Left:=round(Screen.Width/4);
  //fmCer_Downloader_1_1.Position:=poScreenCenter;
  fmCer_Downloader_1_1.WindowState:=wsNormal;
  fmCer_Downloader_1_1.Visible:=true;
  fmCer_Downloader_1_1.pcTools.Pages[0].Show;

end;

procedure TfmCer_Downloader_1_1.tsLogShow(Sender: TObject);
var
  LogFile: widestring;
begin
  LogFile:=ExtractFilePath(ParamStr(0)) + '\log.log';

  if FileExists(LogFile) then
                      begin
                        mLog.Lines.Clear;
                        mLog.Lines.LoadFromFile(LogFile);
                      end
                    else
                      begin
                         mLog.Lines.Clear;
                         mLog.Lines.Add('Лог-файл ещё не был создан программой! Для его создания проведите хотя бы одну загрузку цифровых сертификатов.');
                      end;
end;



end.



Плиз хелп!
Logos300
незнакомец
 
Сообщения: 1
Зарегистрирован: 01.01.2020 11:27:58

Вернуться в Общее

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4

Рейтинг@Mail.ru