Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.108 c
2-1201517761
Neo
2008-01-28 13:56
2008.02.24
Вопрос по SQL


8-1174370882
Дмитрий (Гомель)
2007-03-20 09:08
2008.02.24
Заголовок wav файла


2-1201901798
Бэтман
2008-02-02 00:36
2008.02.24
Дата рождения


6-1180700684
Тфьу
2007-06-01 16:24
2008.02.24
Indy 10 TThread


15-1200894105
Рамиль
2008-01-21 08:41
2008.02.24
Сколько, примерно, может стоить разработка





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский