Форум: "Начинающим";
Текущий архив: 2008.02.24;
Скачать: [xml.tar.bz2];
ВнизIni + checbox Найти похожие ветки
← →
Inslave (2008-01-28 20:23) [0]Господа, вопрос в следующем: Имеется три checkbox"са. Из Ini-файла считываетя значение [от 1 до 3].
Если в файле значение 1 то при инициализации формы (OnCreate), checkbox1 должен стать равным true (значения 2 и 3 соответственно должны check"идить). Но вот в чем проблема:
обработчик OnCreate
FAppIni := TIniFile.Create(ExtractFilePath(Application.ExeName) + filename_IniFile);
далее счтываю с помощью ReadInteger значение (здесь все работает корректно). Потом в зависимости от значения присваиваю checkbox := true.
При получении какого-либо значения checkbox все чекбоксы остаются в False. Почему ?
← →
Германн © (2008-01-28 20:31) [1]
> checkbox := true
Это что такое?
← →
JusteR (2008-01-28 20:33) [2]CheckBox.Checked := True (Я же словами описываю алгоритм)
← →
Inslave (2008-01-28 20:34) [3]CheckBox.Checked := True (Я же словами описываю алгоритм)
← →
Семеныч (2008-01-28 20:35) [4]Чудес не бывает. Давайте полный код OnCreate и текст Ini-файла.
← →
Inslave (2008-01-28 20:43) [5]------------Ini-файл:
[Setup]
Update=1
-----------OnCreate:
procedure Tform_SetSetupImage.FormCreate(Sender: TObject);
var
Value: Integer;
begin
FAppIni := TIniFile.Create(ExtractFilePath(Application.ExeName)
+ filename_IniFile);
Value := FAppIni.ReadString(selection_Setup, Ident, Default); // const
case Value of
1: CheckBox1.Checked := True;
2: CheckBox2.Checked := True;
3: CheckBox3.Checked := True;
end;
← →
Inslave (2008-01-28 20:45) [6]Sorry - небольшая ошибочка (ReadInteger)
------------Ini-файл:
[Setup]
Update=1
-----------OnCreate:
procedure Tform_SetSetupImage.FormCreate(Sender: TObject);
var
Value: Integer;
begin
FAppIni := TIniFile.Create(ExtractFilePath(Application.ExeName)
+ filename_IniFile);
Value := FAppIni.ReadInteger(selection_Setup, Ident, Default); // const
case Value of
1: CheckBox1.Checked := True;
2: CheckBox2.Checked := True;
3: CheckBox3.Checked := True;
end;
← →
Германн © (2008-01-28 20:46) [7]
> Value := FAppIni.ReadInteger(selection_Setup, Ident, Default);
Чему равно Value отладчиком смотрел?
← →
Inslave (2008-01-28 20:48) [8]Смотрел. Здесь все работае корректно. Value равно значению в файле.
← →
Семеныч (2008-01-28 20:54) [9]Еще какие-то обработчики у формы есть? OnShow, например.
← →
Германн © (2008-01-28 20:59) [10]
> Inslave (28.01.08 20:48) [8]
Обработчики OnClick у CheckBox"ов задействаны?
← →
Inslave (2008-01-28 21:03) [11]Обработчики OnClick у CheckBox"ов не задействаны. При инициализации формы должна ставиться галочка исходя из параметра инифайла (Я привел все обработчики)
← →
Германн © (2008-01-28 21:05) [12]
> Inslave (28.01.08 21:03) [11]
>
> Обработчики OnClick у CheckBox"ов не задействаны. При инициализации
> формы должна ставиться галочка исходя из параметра инифайла
> (Я привел все обработчики)
>
Значит где-то врешь. Должно работать.
← →
Inslave (2008-01-28 21:11) [13]Работает только в том случае если, первоначально свойствам 3-x Checked"ов назначить True, а потом, а потом в зависимости от параметра ставить Checked в False.
Т.е. такой код будет рабочий (если первоначально контролам выставить checked - false). Но такой код не подойдет. Нужнро сделать в первоначальном варианте
------------Ini-файл:
[Setup]
Update=1
-----------OnCreate:
procedure Tform_SetSetupImage.FormCreate(Sender: TObject);
var
Value: Integer;
begin
FAppIni := TIniFile.Create(ExtractFilePath(Application.ExeName)
+ filename_IniFile);
Value := FAppIni.ReadInteger(selection_Setup, Ident, Default); // const
case Value of
1:
begin
CheckBox2.Checked := False;
CheckBox3.Checked := False;
end;
2:
begin
CheckBox1.Checked := False;
CheckBox3.Checked := False;
end;
3:
begin
CheckBox1.Checked := False;
CheckBox2.Checked := False;
end;
end;
← →
Германн © (2008-01-28 21:49) [14]
> Inslave (28.01.08 21:11) [13]
> Нужно сделать в первоначальном варианте
Первоначальный вариант абсолютно рабочий.
← →
ASoft (2008-01-29 04:09) [15]
> Inslave (28.01.08 21:11) [13]
имхо, по логике, значение из ini-файла должно применяться к радиокнопкам, а не к чекбоксам
По сабжу, может filename_IniFile, selection_Setup, Ident, Default с этими переменными что-нибудь не так?
← →
Vladimir (2008-01-29 07:43) [16]Вариант:
CheckBox1.Checked := Value = 1;
CheckBox2.Checked := Value = 2;
CheckBox3.Checked := Value = 3;
и еще раз проверить обработчики событий чекбоксов и манипуляции с ними по всему коду.
← →
Плохиш © (2008-01-29 10:46) [17]
> имхо, по логике, значение из ini-файла должно применяться
> к радиокнопкам, а не к чекбоксам
Интересная логика.
← →
ASoft (2008-01-30 03:10) [18]
> Плохиш © (29.01.08 10:46) [17]
> Интересная логика.
Ничего интересного
> Inslave (28.01.08 20:43) [5]
>
> ------------Ini-файл:
> [Setup]
> Update=1
>
> -----------OnCreate:
>....
> Value := FAppIni.ReadString(selection_Setup, Ident, Default);
> // const
> case Value of
> 1: CheckBox1.Checked := True;
> 2: CheckBox2.Checked := True;
> 3: CheckBox3.Checked := True;
> end;
считывается одно значение из 3-х, а значит, при создании формы, только один чекед может быть истина.
Наверняка, у автора, нечто подобное (должно быть) и при записи ini, Default принимает одно из 3-х значений. Это логика радиокнопок, а не чекбоксов имхо
← →
ASoft (2008-01-30 03:23) [19]PS: оказывается, автор уже "перескочил" на другую тему, про радиокнопки:-)
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.02.24;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.043 c