Читаем Delphi. Трюки и эффекты полностью

Пусть нужно, чтобы формы приложения запоминали свое расположение, размер, введенные и выбранные в элементах управления данные. В таком случае необходимость в сотый раз перетаскивать часто открываемую форму на удобное место не будет раздражать пользователя. Если же форма требует постоянного ввода похожих данных, то восстановление выбранных и введенных в прошлый раз значений будет только плюсом.

Теперь о деле: есть форма для фильтрации запроса к базе данных, она показанна на рис. 7.7.

Рис. 7.7. Форма фильтра для поиска товара

Содержимое формы не суть важно, а важно то, что при нажатии кнопки ОК положение, размер формы, а также данные, введенные пользователем, будут сохранены в реестре при помощи процедуры SaveFilter (листинг 7.14).

...

Листинг 7.14.

Сохранение параметров формы в реестре

procedure TForm1.OKClick(Sender: TObject);

begin

SaveFilter;

//Выполняем требуемые действия…

end;

//Процедура сохраняет параметры в реестр

procedure TForm1.SaveFilter;

var

reg: TRegistry; //По умолчанию: RootKey = HKEY_CURRENT_USER

strShops: String;

i: Integer;

begin

reg := TRegistry.Create;

try

//Открываем или создаем раздел, в котором будут

//сохранены параметры формы

reg.OpenKey(strBaseKey + \'\Form1\', True);

//Сохранение параметров

//1. Размер и положение формы

reg.WriteInteger(\'Width\', Width);

reg.WriteInteger(\'Height\', Height);

reg.WriteInteger(\'Top\', Top);

reg.WriteInteger(\'Left\', Left);

//2. Последнее введенное наименование

reg.WriteString(\'txtName.Text\', txtName.Text);

//3. Выбранные магазины

strShops := \'\

for i := 0 to lstShops.Count–1 do

if lstShops.Selected[i] then

strShops := strShops + lstShops.Items[i] + \',\

reg.WriteString(\'lstShops.Selection\', strShops);

//4. Применение сортировки

reg.WriteBool(\'chkSort.Checked\', chkSort.Checked);

except

on ERegistryException do

MessageBox(Handle, \'Ошибка при сохранении фильтра\',

\'Поиск товара\', MB_ICONEXCLAMATION)

;

end;

reg.CloseKey;

reg.Free;

end;

В рассматриваемом примере константа strBaseKey, определяющая положение раздела для сохранения настроек, задана следующим образом:

...

const

strBasekey = \'Software\Delphi. Трюки и эффекты\Настройки программы\

Открыв Редактор реестра, можно удостовериться в правильном сохранении требуемых нам параметров (рис. 7.8).

Рис. 7.8. Параметры формы, записанные в реестр

Считывание параметров формы можно производить, например, при ее создании. Тогда в обработчике события Create достаточно поместить вызов процедуры LoadFilter (листинг 7.15).

...

Перейти на страницу:

Похожие книги

Забытое
Забытое

Захватывающая история Сиенны Престон продолжается во второй части головокружительной серии «Игра обмана».Семнадцатилетняя Сиенна не понаслышке знает о душевной боли и потерях. Но на этот раз всё по-другому: кто-то вмешался в воспоминания её возлюбленного, и теперь ей предстоит найти ответы.След ведёт её к сверкающим небоскрёбам и роскоши Рубекса, столицы Пасифики, где она проникает в правительственное Ведомство интеллекта и генетики. Но ответы получить не так-то просто, особенно когда её собственные воспоминания могут быть искажены. К счастью, рядом есть Зейн Райдер, готовый помочь ей сложить вместе кусочки головоломки. Его преданность и забота размывают границу между дружбой и чем-то большим.Когда Сиенна подбирается слишком близко к тёмным секретам Ведомства, её обвиняют в убийстве видного государственного деятеля, и ей приходится пуститься в бега. Как бы ни разрывалось сердце Сиенны в попытке понять, кого она любит, это всё вскоре перестаёт иметь значение — потому что единственное, что её сейчас ждёт, это смертный приговор.

Марина Козикова , Александр Степанович Грин , Марина Суржевская , Кристин Смит

Любовное фэнтези, любовно-фантастические романы / Проза / Классическая проза / Самиздат, сетевая литература / Технические науки / Любовно-фантастические романы