![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
![]() Приветствую всех!
Подскажите, пожалуйста, как правильно считать и записать состояние чекбокса? Есть CheckBox. Есть ini-файл в котором прописано: Код:
[Options] FullScreen=Yes Как правильно записать и прочитать, так что бы CheckBox был включен или выключен, в зависимости от значения в ini-файле (Yes/No)? С ReadBool/WriteBool - все просто. Код:
chk1.Checked:=Ini.ReadBool('Launcher','SingleCPU',False); Ini.WriteBool('Launcher','SingleCPU',chk1.Checked); А как быть тут? Будьте добры, подскажите пожалуйста. |
#2
|
||||
|
||||
![]() Код:
var St : String; begin St := AnsiUpperCase(Ini.ReadString('Options', 'FullScreen', 'No')); chk1.Checked := St = 'YES'; ... end; ах да, ещё ведь и запись нужна Код:
const fs : array[Boolean] of String = ('No', 'Yes')'; begin Ini.WriteString('Options', 'FullScreen', fs[chk1.Checked])); ... Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. Последний раз редактировалось angvelem, 28.01.2015 в 02:07. |
Этот пользователь сказал Спасибо angvelem за это полезное сообщение: | ||
Alloc (28.01.2015)
|
#3
|
||||
|
||||
![]() Спасибо за ответ!
Цитата:
как я понимаю, это большой геморрой, так как придется для каждого чекбокса делать, а их там около 17 получается.... может есть более простой вариант? не подскажите? |
#4
|
||||
|
||||
![]() Никакого геморроя нет. Можно организовать чтение/запись в цикле.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
Этот пользователь сказал Спасибо angvelem за это полезное сообщение: | ||
Alloc (28.01.2015)
|
#5
|
|||
|
|||
![]() Например так
Код:
procedure ReadCheckBox(Sender:TCheckBox;const Name:String); var St : String; begin St := AnsiUpperCase(Ini.ReadString('Options',Name, 'No')); Sender.Checked := St = 'YES'; end; procedure WriteCheckBox(Sender:TCheckBox;const Name:String); const fs : array[Boolean] of String = ('No', 'Yes')'; begin Ini.WriteString('Options', Name, fs[Sender.Checked])); end; Код:
ReadCheckBox (chk1,'FullScreen'); ReadCheckBox (chk2,'UseMouse'); |
Этот пользователь сказал Спасибо icWasya за это полезное сообщение: | ||
Alloc (28.01.2015)
|
#6
|
||||
|
||||
![]() Благодарю всех за помощь, задача решена, все работает как надо.
|
#7
|
||||
|
||||
![]() Еще один вопрос если позволите можно?
Как добавить в выше написанные процедуры возможность выбрать самому какой тип переключателей использовать? вот процедура: Код:
procedure WriteCheckBox(Sender:TCheckBox;const Name:String); как дополнительно указать переменные что бы изначально самому определить значения в Код:
fs : array[Boolean] of String = ('No', 'Yes')'; вместо "No", "Yes" - свои, допустим Код:
WriteCheckBox(chk1, 'Options','Enabled','Disabled'); хочется чтобы процедуры были универсальными а не только - "Yes","No" заранее спасибо! |
#8
|
|||
|
|||
![]() Код:
procedure WriteCheckBox(Sender : TCheckBox; Name : String; const Values : Array [Boolean] Of String); begin ... end; ... WriteCheckBox(chb1, 'Options',['Enabled','Disabled']); |
Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
Alloc (28.01.2015)
|
#9
|
||||
|
||||
![]() Цитата:
выдает ошибку 'OF' expected but '[' found, не могу понять как исправить..( Последний раз редактировалось Alloc, 28.01.2015 в 22:17. |
#10
|
|||
|
|||
![]() Цитата:
Код:
type TBoolToStringArray = array[bool] of string; const ED :TBoolToStringArray = ('Disabled','Enabled'); YN :TBoolToStringArray = ('No','Yes'); Dig :TBoolToStringArray = ('0','1'); procedure ReadCheckBox(Sender:TCheckBox;const Name:String;const YN:TBoolToStringArray); var St : String; begin St := Ini.ReadString('Options',Name, YN[false]); Sender.Checked := CompareText(St ,YN[true])=0; end; procedure WriteCheckBox(Sender:TCheckBox;const Name:String;const YN:TBoolToStringArray); begin Ini.WriteString('Options', Name, YN[Sender.Checked])); end; Код:
ReadCheckBox (chk1,'CanClick',ED); ReadCheckBox (chk2,'UseMouse',YN); |
Этот пользователь сказал Спасибо icWasya за это полезное сообщение: | ||
Alloc (29.01.2015)
|
#11
|
||||
|
||||
![]() Цитата:
Большое Вам спасибо, теперь все работает как надо, этого я и добивался) |