Использую 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.
Плиз хелп!