Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.02.24;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.023 c
11-1184218228
BMouradov
2007-07-12 09:30
2008.02.24
KOLTreeView - корневые узлы


11-1179211668
WindLord
2007-05-15 10:47
2008.02.24
Проблема с отображением компонентов в KOL/МСК 2.60, Delphi 7


3-1191933250
Still Swamp
2007-10-09 16:34
2008.02.24
Проблема с блоб полем.


2-1201679334
trubin
2008-01-30 10:48
2008.02.24
Как отличить CD от DVD. Как приводы делают это?


2-1201712790
Res
2008-01-30 20:06
2008.02.24
winsock