Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Сохранение настроек форм


Автор: aktuba 21.8.2006, 10:43
Кто-нибудь сталкивался с такой проблемой: необходимо создать функции, сохраняющие и загружающие настройки формы, переданной в параметре функции. Т.е. функции должны быть универсальны для любой формы. 

Если есть соображения, прошу отписать.

Автор: Yanis 21.8.2006, 10:56
aktuba
Может тебе стоит поставить RxLib?

Автор: kostas 21.8.2006, 11:43
в чем собственно проблема?
Код

uses inifiles;
...
procedure SaveSettings(frm: TForm; s: string);
var ini: TIniFile;
begin
  ini:=TIniFile.Create(s);
  try
   ini.WriteInteger('Options_'+frm.Name, 'Width', frm.Width); //Сохраняем ширину окна
   ... //тут все остальное необходимое, например height, left, top и т.д.
  finally
   ini.Free;
  end;
end;

//вызывать соответственно вот так:
SaveSettings(Form1, ExtractFilePath(ParamStr(0))+'Settings.ini');

...

//для загрузки настроек думаю сам сообразишь))

Автор: Демо 21.8.2006, 12:03
Цитата(kostas @  21.8.2006,  11:43 Найти цитируемый пост)
в чем собственно проблема?


Думаю, что проблема в том, автор не сказал, что конкретно он хочет сохранять, какие параметры, компоненты и т.п. -)


Автор: Alexeis 21.8.2006, 12:10
Цитата(Демо @  21.8.2006,  12:03 Найти цитируемый пост)
автор не сказал, что конкретно он хочет сохранять, какие параметры, компоненты и т.п. -)

Ну тогда в цикле перечисляем компоненты
Код

Application.Components[]

Если они относятся к определенной группе, то сохранияем, одни параметы, для другой групы другие, А можно вообеще все Published свойства разом в один поток, и дальше эти потоки (от разных компонентом) объединять.
Тема уже обсуждалась...

Автор: aktuba 21.8.2006, 12:16
Насчет RxLib - стоит с момента установки Delphi.

Цитата

автор не сказал, что конкретно он хочет сохранять, какие параметры, компоненты и т.п. -)


Ответ: 
Цитата

необходимо создать функции, сохраняющие и загружающие настройки формы, переданной в параметре функции. Т.е. функции должны быть универсальны для любой формы. 


Т.е. необходимо в функцию передать форму, а функция сохраняет ВСЮ ФОРМУ в файл, вторая функция загружает из файла все данные в УЖЕ СУЩЕСТВУЮЩУЮ ФОРМУ! На форме могут быть как стандартные компоненты, так и не стандартные. В этом и проблемма, т.к. я не могу отследить что именно на форме.

Ini-файлы и реестр не подходят по тем-же причинам. Какие еще есть мысли?

Автор: Alexeis 21.8.2006, 12:26
aktuba, 
см. внизу ссылки
http://forum.vingrad.ru/index.php?showtopic=94245

Автор: Демо 21.8.2006, 12:50
Цитата(aktuba @  21.8.2006,  12:16 Найти цитируемый пост)
Цитата


Так тебе нужно и текст из TMemo сохранять, например?
Нужно ли тебе сохранять загруженные .BMP и прочие радости?

Не слишклм ли обширное у тебя понимание 
Цитата(aktuba @  21.8.2006,  10:43 Найти цитируемый пост)
Сохранение настроек форм, и компонентов на ней

?

Автор: aktuba 21.8.2006, 13:02
Нет, текст, изображения не нужны. Нужны параметры компонентов, а не содержание...


Автор: Демо 21.8.2006, 13:25
Получить и сохранить ты сможешь только поля, свояства и методы, опубликованные в секции published, доступные в RTTI.

Советую поискать или купить :

Михаил Голованов, Евгений Веселов "Создание компонентов в среде Delphi. Руководство разработчика".
Марко Канту, Тим Гуч "Delphi. Руководство разработчика".

Автор: kostas 21.8.2006, 16:24
упс) ну тогда циклом проходишь и сохраняешь, правда не у всех одинаковые свойства, поэтому придется все же немного поусловничать)) чтобы облегчить задачу можно сохранять каждый компонент в отдельный файл к примеру... или через поток, вот и пример пришел в голову:
Код

...
procedure SaveSettings(frm: TForm);
var i: integer;
      f: TStream;
begin
  f:=TStream.Create;
  try
   for i:=0 to frm.ComponentsCount-1 do
    f.WriteComponent(frm.Components[i]);
   f.SaveToFile('путь');
  finally
   f.Free;
  end;   
end; 

//загрузку по аналогии

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)