Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Ini + checbox


Inslave ©   (2008-01-28 20:23:00) 

Господа, вопрос в следующем: Имеется три 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. Почему ?


ASoft   (2008-01-30 03:23:00) [1]

PS: оказывается, автор уже "перескочил" на другую тему, про радиокнопки:-)


ASoft   (2008-01-30 03:10:00) [2]


> Плохиш ©   (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-х значений. Это логика радиокнопок, а не чекбоксов имхо


Плохиш   (2008-01-29 10:46:00) [3]


> имхо, по логике, значение из ini-файла должно применяться
> к радиокнопкам, а не к чекбоксам

Интересная логика.


Vladimir   (2008-01-29 07:43:00) [4]

Вариант:

CheckBox1.Checked := Value = 1;
CheckBox2.Checked := Value = 2;
CheckBox3.Checked := Value = 3;

и еще раз проверить обработчики событий чекбоксов и манипуляции с ними по всему коду.


ASoft   (2008-01-29 04:09:00) [5]


> Inslave   (28.01.08 21:11) [13]

имхо, по логике, значение из ini-файла должно применяться к радиокнопкам, а не к чекбоксам
По сабжу, может filename_IniFile, selection_Setup, Ident, Defaultс этими переменными что-нибудь не так?


Германн   (2008-01-28 21:49:00) [6]


> Inslave   (28.01.08 21:11) [13]


> Нужно сделать в первоначальном варианте

Первоначальный вариант абсолютно рабочий.


Inslave   (2008-01-28 21:11:00) [7]

Работает только в том случае если, первоначально свойствам 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:05:00) [8]


> Inslave   (28.01.08 21:03) [11]
>
> Обработчики OnClick у CheckBox'ов не задействаны. При инициализации
> формы должна ставиться галочка исходя из параметра инифайла
> (Я привел все обработчики)
>

Значит где-то врешь. Должно работать.


Inslave   (2008-01-28 21:03:00) [9]

Обработчики OnClick у CheckBox'ов не задействаны. При инициализации формы должна ставиться галочка исходя из параметра инифайла (Я привел все обработчики)


Германн   (2008-01-28 20:59:00) [10]


> Inslave   (28.01.08 20:48) [8]

Обработчики OnClick у CheckBox'ов задействаны?


Семеныч   (2008-01-28 20:54:00) [11]

Еще какие-то обработчики у формы есть? OnShow, например.


Inslave   (2008-01-28 20:48:00) [12]

Смотрел. Здесь все работае корректно. Value равно значению в файле.


Германн   (2008-01-28 20:46:00) [13]


> Value := FAppIni.ReadInteger(selection_Setup, Ident, Default);

Чему равно Value отладчиком смотрел?


Inslave   (2008-01-28 20:45:00) [14]

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;


Inslave   (2008-01-28 20:43:00) [15]

------------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;


Семеныч   (2008-01-28 20:35:00) [16]

Чудес не бывает. Давайте полный код OnCreate и текст Ini-файла.


Inslave   (2008-01-28 20:34:00) [17]

CheckBox.Checked := True (Я же словами описываю алгоритм)


JusteR   (2008-01-28 20:33:00) [18]

CheckBox.Checked := True (Я же словами описываю алгоритм)


Германн   (2008-01-28 20:31:00) [19]


> checkbox := true

Это что такое?


Наверх

Титульная страница Поиск, карта сайта Написать письмо