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


Автор: zarogon 4.11.2006, 23:47
Доброго времени суток. Скажите плиз как можно сохранять состояние checkboxa в inifile и потом загружать эти данные.


Заранее спасибо.

Автор: Zlo 5.11.2006, 00:32
сохранение
Код

IniFile.WriteBool('options', 'Play', Form1.CheckBox3.Checked);


загрузка
Код

Form1.CheckBox1.Checked:=IniFile.ReadBool('options','Explorer',true);

Автор: zarogon 5.11.2006, 01:44
Вот рисунок на нем все написано что мне надо 



user posted image

Автор: s0neg 5.11.2006, 01:58
Дык, по нажатию на CheckBox, свойство Checked оставшихся СheckBox ставь в false. А в чем проблема сохранения? Сохраняй и загружай значения _всех_ CheckBox`ов , как показал Zlo  smile 
 
P.S. Это у тебя Мини КР 2?  smile 

Автор: zarogon 5.11.2006, 02:08
Да это типа мини КР2)) дальше после создания игрока нагружаем корабль всяким оборудыванием. Просто я думал что сдесь "Form1.CheckBox1.Checked:=IniFile.ReadBool('options','Explorer',true);"  загружаеться значание чекбокса как true, а мне надо чтоб значение загружалось в зависимости true или false. Или я чего не понимаю  smile 

Автор: s0neg 5.11.2006, 02:30
Нет не понимаешь ). 
Код

  Form1.CheckBox1.Checked := IniFile.ReadBool('options', 'Explorer', true)
 
3-й параметр, это то значение, которая вернет функция, если не получиться считать значение из файла. Например, ты первый раз запускаешь игру и ini файлик еще не создан, то значение CheckBox1.Checked будет равно true.

 smile 

Автор: Zlo 5.11.2006, 03:03
Constructor Create('d:\test.INI'); 
Создать экземпляр объекта и связать его с файлом. Если такого файла нет, то он создается, но только тогда, когда произведете в него запись информации. 

WriteBool(const Section, Ident: string; Value: Boolean); 
Присвоить элементу с именем Ident раздела Section значение типа boolean 

WriteInteger(const Section, Ident: string; Value: Longint); 
Присвоить элементу с именем Ident раздела Section значение типа Longint 

WriteString(const Section, Ident, Value: string); 
Присвоить элементу с именем Ident раздела Section значение типа String 

ReadSection (const Section: string; Strings: TStrings); 
Прочитать имена всех корректно описанных переменных раздела Section (некорректно описанные опускаются) 

ReadSectionValues(const Section: string; Strings: TStrings); 
Прочитать имена и значения всех корректно описанных переменных раздела Section. Формат : 
имя_переменной = значение 

EraseSection(const Section: string); 
Удалить раздел Section со всем содержимым 

ReadBool(const Section, Ident: string; Default: Boolean): Boolean; 
Прочитать значение переменной типа Boolean раздела Section с именем Ident, и если его нет, то вместо него подставить значение Default. 

ReadInteger(const Section, Ident: string; Default: Longint): Longint; 
Прочитать значение переменной типа Longint раздела Section с именем Ident, и если его нет, то вместо него подставить значение Default. 

ReadString(const Section, Ident, Default: string): string; 
Прочитать значение переменной типа String раздела Section с именем Ident, и если его нет, то вместо него подставить значение Default. 

Free; 
Закрыть и освободить ресурс. Необходимо вызвать при завершении работы с INI файлом 

Property Values[const Name: string]: string; 
Доступ к существующему параметру по имени Name

Пример:
Код

Procedure TForm1.FormClose(Sender: TObject); 
var 
 IniFile:TIniFile; 
begin 
  IniFile := TIniFile.Create('d:\test.INI'); { Создали экземпляр объекта } 
  IniFile.WriteBool('Options', 'Sound', True); { Секция Options: Sound:=true } 
  IniFile.WriteInteger('Options', 'Level', 3); { Секция Options: Level:=3 } 
  IniFile.WriteString('Options' , 'Secret password', Pass);  
   { Секция Options: в Secret password записать значение переменной Pass } 
  IniFile.ReadSection('Options ', memo1.lines); { Читаем имена переменных} 
  IniFile.ReadSectionValues('Options ', memo2.lines); { Читаем имена и значения } 
  IniFile.Free; { Закрыли файл, уничтожили объект и освободили память } 
end; 


Автор: Guedda 5.11.2006, 09:08
А что, если пользоваться не CheckBoxes, а RadioButtons?

Автор: zarogon 5.11.2006, 22:15
Цитата(Guedda @ 5.11.2006,  09:08)
А что, если пользоваться не CheckBoxes, а RadioButtons?

А можно примерчик  smile 

Автор: Reptile 6.11.2006, 10:14
Guedda имел ввиду использовать RadioButtons, т.к. потом не нужно будет остальные RadioButtons.Checked делать false. А записывать и считывать значения так-же как написал Zlo. 
 

Автор: zarogon 6.11.2006, 19:09
Ага  smile  Спасибо за ответы. Буду пробовать   smile 

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