novashdima
11-02-2013, 15:44
Загружаю данные таким образом:
procedure TIniOptions.LoadSettings(Ini: TIniFile);
var chk, i: integer;
begin
if Ini <> nil then
begin
if not Ini.SectionExists('TsSpinEdit')
then chk := MessageDlg('Неверные данные!', mtError, [mbOk] , 0)
else
begin
with MainForm do
for I := 0 to ComponentCount - 1 do
begin
if Components[i] is TsSpinEdit
then TsSpinEdit(Components[i]).Value := Ini.ReadInteger('TsSpinEdit', TsSpinEdit(Components[i]).Name, 0);
if Components[i] is TsCheckBox
then TsCheckBox(Components[i]).Checked := Ini.ReadBool('TsCheckBox', TsCheckBox(Components[i]).Name, False);
if Components[i] is TsComboBox
then TsComboBox(Components[i]).ItemIndex := Ini.ReadInteger('TsComboBox', TsComboBox(Components[i]).Name, 0);
end;
end;
end;
end;
И все бы хорошо, да один компонент присваивает неправильное значение, при повторной загрузке данных из файла все норм.
Процедура обработки при изменении данных одна на все, поэтому такой баг должен был быть везде.
П.С. После загрузки данных на этом самом компоненте значение становится равным максимально возможному, причем такое возможно только если при вводе данных ввели значение больше максимального, тогда присваивается максимальному значению, но все равно странно...
Еще интересно, какое использовать диалоговое окно типа MessageDlg (с указанием типа сообщений и кнопок), но без возвращаемой кнопки (ShowMessage не подходит). Только мучаться с MessageBox что ли?
procedure TIniOptions.LoadSettings(Ini: TIniFile);
var chk, i: integer;
begin
if Ini <> nil then
begin
if not Ini.SectionExists('TsSpinEdit')
then chk := MessageDlg('Неверные данные!', mtError, [mbOk] , 0)
else
begin
with MainForm do
for I := 0 to ComponentCount - 1 do
begin
if Components[i] is TsSpinEdit
then TsSpinEdit(Components[i]).Value := Ini.ReadInteger('TsSpinEdit', TsSpinEdit(Components[i]).Name, 0);
if Components[i] is TsCheckBox
then TsCheckBox(Components[i]).Checked := Ini.ReadBool('TsCheckBox', TsCheckBox(Components[i]).Name, False);
if Components[i] is TsComboBox
then TsComboBox(Components[i]).ItemIndex := Ini.ReadInteger('TsComboBox', TsComboBox(Components[i]).Name, 0);
end;
end;
end;
end;
И все бы хорошо, да один компонент присваивает неправильное значение, при повторной загрузке данных из файла все норм.
Процедура обработки при изменении данных одна на все, поэтому такой баг должен был быть везде.
П.С. После загрузки данных на этом самом компоненте значение становится равным максимально возможному, причем такое возможно только если при вводе данных ввели значение больше максимального, тогда присваивается максимальному значению, но все равно странно...
Еще интересно, какое использовать диалоговое окно типа MessageDlg (с указанием типа сообщений и кнопок), но без возвращаемой кнопки (ShowMessage не подходит). Только мучаться с MessageBox что ли?