Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Сохранение настроек  (Прочитано 8771 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Dr.Snipper
Гость
« : 19-12-2004 10:18 » 

Мы сделали на форме галочку(CheckBox). Запустили программу и эту галочку поставили, и вышли из проги. Запускаем снова и галочки уже нет  Так больше нельзя... .  Как сделать так,чтобы эта галочка сохранялась,и при повторном запуске иже была поставлена или снята). Я слышал (точнее читал) что это можно сделать либо через реестр либо ini файлом (программа сохраняет в нём данные (в нашем случае о галочке)
и при запуке открывает его и загружает настройки) Это всё что я об этом знаю, вопрос в том как это сделать.
Записан
baldr
Команда клуба

cy
Offline Offline
Пол: Мужской
Дорогие россияне


WWW
« Ответ #1 : 19-12-2004 11:13 » 

Посмотри класс TIniFile. В Uses подцепи файл IniFiles.
Там все просто. Если все равно не поймешь как он используется - пиши, я постараюсь отыскать пример. Правда, он у меня очень громоздкий.
Записан

Приличный компьютер всегда будет стоить дороже 1000 долларов, потому что 500 долларов - это не вполне прилично
x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #2 : 19-12-2004 11:30 » 

лучше через реестр. inifile программа может не найти, если её запустили из другого каталога, к примеру. класть его в корень винды - тоже не лучший вариант. посмотри примеры в справке по работе с TRegistry, там всё достаточно прозрачно.
Записан

baldr
Команда клуба

cy
Offline Offline
Пол: Мужской
Дорогие россияне


WWW
« Ответ #3 : 19-12-2004 12:01 » 

x77, если запустили из другого каталога - все равно можно получить каталог программы через ParamStr(0)
Записан

Приличный компьютер всегда будет стоить дороже 1000 долларов, потому что 500 долларов - это не вполне прилично
x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #4 : 19-12-2004 14:33 » 

baldr, да много чего можно, на самом-то деле Улыбаюсь я потому и говорю, что лучше через реестр, чтобы со всеми этими граблями не возиться.
Записан

Kivals
Команда клуба

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 21-12-2004 15:06 » 

В принципе если настроек не много - то можно использовать TRegIniFile класс - это работа через реестр, но более простыми средствами чем TRegistry
Записан
Nilbog
Гость
« Ответ #6 : 18-08-2005 09:16 » new

во хороший пример сохранений настроек накопал в хэлпе:

с помощю ini файла


uses IniFiles;

procedure TForm1.FormCreate(Sender: TObject);
var
  F: TIniFile;
  names: TStringList;
  i: integer;
begin
  F := TIniFile.Create(ExtractFilePath(ParamStr(0)) +
    'window.ini');

  Form1.Left := F.ReadInteger('position', 'left', 0);
  Form1.Width := F.ReadInteger('position', 'width', 200);
  Form1.Top := F.ReadInteger('position', 'top', 0);
  Form1.Height := F.ReadInteger('position', 'height', 200);

  Edit1.Text := F.ReadString('tools', 'edit1', 'no text');

  Edit2.Text := IntToStr(F.ReadInteger('tools', 'koef', 0));
  CheckBox1.Checked := F.ReadBool('tools', 'check', true);

  names := TStringList.Create;
  F.ReadSection('files', names);
  for i := 0 to Names.Count - 1 do
    ListBox1.Items.Add(F.ReadString('files', names.Strings,
    ''));
  names.Destroy;

  F.Destroy;
end;

procedure TForm1.FormDestroy(Sender: TObject);
var
  F: TIniFile;
  i: integer;
begin

  F := TIniFile.Create(ExtractFilePath(ParamStr(0)) +
    'window.ini');

  F.WriteInteger('position', 'left', Form1.Left);
  F.WriteInteger('position', 'width', Form1.Width);
  F.WriteInteger('position', 'top', Form1.Top);
  F.WriteInteger('position', 'height', Form1.Height);

  F.WriteString('tools', 'edit1', Edit1.Text);
  F.WriteInteger('tools', 'koef', StrToIntDef(Edit2.Text, 0));
  F.WriteBool('tools', 'check', CheckBox1.Checked);

  for i := 0 to ListBox1.Items.Count - 1 do

    F.WriteString('files', 'file' + IntToStr(i+1), ListBox1.Items.Strings);

  F.Free;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  ListBox1.Items.Add(Edit1.Text);
end;
« Последнее редактирование: 20-12-2007 19:45 от Алексей1153++ » Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines