![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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]));
...Последний раз редактировалось angvelem, 28.01.2015 в 02:07. |
| Этот пользователь сказал Спасибо angvelem за это полезное сообщение: | ||
Alloc (28.01.2015)
| ||
|
#3
|
||||
|
||||
|
Спасибо за ответ!
Цитата:
как я понимаю, это большой геморрой, так как придется для каждого чекбокса делать, а их там около 17 получается.... может есть более простой вариант? не подскажите? |
|
#4
|
||||
|
||||
|
Никакого геморроя нет. Можно организовать чтение/запись в цикле.
|
| Этот пользователь сказал Спасибо 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
|
||||
|
||||
|
Цитата:
Большое Вам спасибо, теперь все работает как надо, этого я и добивался) |