Листинг 7.15.
Загрузка параметров формы из реестра
procedure TForm1.FormCreate(Sender: TObject);
begin
LoadFilter();
end;
//Процедура загружает параметры из реестра
procedure TForm1.LoadFilter();
var
reg: TRegistry; //По умолчанию: RootKey = HKEY_CURRENT_USER
strShops: String;
shopStart, shopEnd: Integer;
begin
reg := TRegistry.Create();
try
//Открываем раздел, в котором сохранены параметры формы
reg.OpenKey(strBaseKey + \'\Form1\', False);
//Загрузка сохраненных ранее параметров
//1. Размер и положение формы
Width := reg.ReadInteger(\'Width\');
Height := reg.ReadInteger(\'Height\');
Top := reg.ReadInteger(\'Top\');
Left := reg.ReadInteger(\'Left\');
//2. Последнее введенное наименование
txtName.Text := reg.ReadString(\'txtName.Text\');
//3. Выбранные в прошлый раз магазины
strShops := reg.ReadString(\'lstShops.Selection\');
shopStart := 1;
for shopEnd := 0 to Length(strShops) do
if strShops[shopEnd] = \',\' then
begin
//Получение имени магазина и выделение его в списке
SelectShop(Copy(strShops, shopStart,
shopEnd – shopStart));
shopStart := shopEnd + 1;
end;
//4. Применение сортировки
chkSort.Checked := reg.ReadBool(\'chkSort.Checked\');
except
on ERegistryException do
//Игнорируем ошибки (просто не
//будут зачитаны данные из реестра,
//например, при первом запуске программы)
;
end;
reg.CloseKey();
reg.Free();
end;
//Процедура выделяет магазин с заданным названием
//(если он есть в списке)
procedure TForm1.SelectShop(strShopName: String);
var
i: Integer;
begin
for i := 0 to lstShops.Count–1 do
if lstShops.Items[i] = strShopName then
begin
lstShops.Selected[i] := True;
Exit;
end;
end;
Некоторая сложность алгоритма загрузки списка выбранных магазинов обусловлена желанием добиться того, чтобы при изменении списка не выделялись ранее не выбранные магазины (иначе можно было бы просто сохранять индексы).