Например, весьма часто требуется обеспечить сохранение размеров формы приложения для последующих запусков программы. Конечно, для этого можно при закрытии формы сохранить ее размеры в файле настроек, а при последующем запуске – считать из файла и установить.
Но можно поступить иначе – поместить все эти функции в компонент, который выполнял вышеописанные действия самостоятельно без участия программиста. Эта мысль пришла в голову не мне первому, и уже в незапамятном 1995 году еще для первой версии Delphi был разработана библиотека компонентов RxLib, в которую среди прочих вошел компонент TFormStorage, позволяющий автоматически сохранять, а в последующем - загружать положение формы на экране, а также любые опубликованные свойства компонентов.
Являясь, по сути дела, хорошо оформленным инструментом для работы с инициализационными файлами и реестром, этот компонент способен оказать огромное подспорье в создании профессиональных приложений.
Например, в программе требуется запускать внешние приложения и сохранять историю запущенных приложений.
Разработаем небольшое тестовое приложение, обладающее такими возможностями. Для этого на форму поместим уже известный нам компонент TRzLauncher, TComboBox для ввода имени запускаемого файла, кнопку, нажатие на которую будет вызывать запуск программы, и, наконец, компонент TFormStorage для сохранения опубликованных свойств.
Затем с помощью редактора свойства StoredProps установим, что сохранению подлежит свойство Items выпадающего списка запускаемых программ, как показано на рис. 2.
Пример 10.11. Обработчик события нажатия на кнопку запуска
procedure TForm1.Button1Click(Sender: TObject); begin RzLauncher1.ProgramName:=ComboBox1.Text; RzLauncher1.Launch; if ComboBox1.Items.IndexOf(ComboBox1.Text)=-1 then ComboBox1.Items.Add(ComboBox1.Text); end;
Первые две строчки вам уже знакомы, а третья добавлена для автоматического добавления однажды запущенной программы в список. Все готово. Как сохранять ComboBox1.Items? Нам для этого ничего делать не нужно. Все сделает TFormStorage. Закроем программу и убедимся, что список автоматически загрузился!