Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сохранение настроек с помощью TIni 
:(
    Опции темы
flintstone
Дата 2.12.2007, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 18.10.2007

Репутация: нет
Всего: нет



Как сохранять настройки в Ini файл и читать их я знаю. Проблема в другом:
На Form2 навешаны CheckBox'ы. При нажатии на кнопку Ok, если включены определённые CheckBox'ы, идёт выполнение функции и запись настроек в Ini. Затем я выхожу из программы, и запускаю её заново. Загружается Form1. В функции FormCreate есть 
Form2->CheckBox1->Checked = IniSettings->ReadBool("Settings","Autorun", false);
Form2->ButtonApplyClick(Sender);
Вроде бы CheckBox1 на форме Form2 должен быть с галочкой или без (как показано в настройках), а нет, выскакивает ошибка при загрузке программы с выделением строки
Form2->CheckBox1->Checked = IniSettings->ReadBool("Settings","Autorun", false);
PM MAIL   Вверх
Ivan.
Дата 2.12.2007, 20:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 2.11.2004

Репутация: нет
Всего: 2



Ну во-первых в событии FormCreate Form1 Form2 скорее всего еще не созданна 
Во-вторых есть компанентка (точнее целый пакет компанент) storage library, каторая автоматически все это делает сама. кликается по компаненте, открывается список со всемы компанентами, лежащими рядом, и ихними пропертями. ставих галочку на нужном проперти и он автоматически загружается и выгружается. не требуется ни одной строчки кода.
Storage Library

Это сообщение отредактировал(а) Ivan. - 2.12.2007, 20:24


--------------------
Я могу ВСЁ, вопрос - сколько времени у меня это займет!
PM MAIL ICQ   Вверх
flintstone
Дата 2.12.2007, 21:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 18.10.2007

Репутация: нет
Всего: нет



Компонент Storage Library, как я понял, подходит только к Delphi, и притом он платный.
Но есть ли всё-таки решить проблему с помощью создания главной формы?

PM MAIL   Вверх
artsb
Дата 2.12.2007, 23:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 39
Всего: 64



Может попробовать сохранить значения во временные переменные(которые потом удалить), а потом в OnCreate для Form2 присвоить значения из переменных?


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
ksili
Дата 3.12.2007, 06:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2069
Регистрация: 3.11.2005
Где: Красноярск

Репутация: 1
Всего: 17



Цитата(flintstone @  2.12.2007,  21:47 Найти цитируемый пост)
Form2->CheckBox1->Checked = IniSettings->ReadBool("Settings","Autorun", false);
Form2->ButtonApplyClick(Sender);

Почему это всё не запихнуть в OnCreate второй формы?


--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
artsb
Дата 3.12.2007, 09:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 39
Всего: 64



ksili возможно некоторые настройки нужно применить к Form1.


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
ksili
Дата 3.12.2007, 10:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2069
Регистрация: 3.11.2005
Где: Красноярск

Репутация: 1
Всего: 17



Что значит "применить к Form1"? 

Form1->.... можно написать и из второй формы


--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
artsb
Дата 3.12.2007, 10:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 39
Всего: 64



Ну т.е. до того как будет создана Form2, к Form1 нужно применить какие-либо настройки (может графические или ещё какие, например доступность кнопки, размер или положение формы).


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
ksili
Дата 3.12.2007, 10:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2069
Регистрация: 3.11.2005
Где: Красноярск

Репутация: 1
Всего: 17



Она что там полчаса создается? Создалась - а потом уже и применить можно. Или вообще изменить порядок создания форм, сначала Form2, а потом Form1
Файл проекта project1.cpp:
Код

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop
//---------------------------------------------------------------------------
USEFORM("Unit1.cpp", Form1);
USEFORM("Unit2.cpp", Form2);
//---------------------------------------------------------------------------
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
    try
    {
         Application->Initialize();
         Application->CreateForm(__classid(TForm2), &Form2);
         Application->CreateForm(__classid(TForm1), &Form1);
         Application->Run();
    }
    catch (Exception &exception)
    {
         Application->ShowException(&exception);
    }
    catch (...)
    {
         try
         {
             throw Exception("");
         }
         catch (Exception &exception)
         {
             Application->ShowException(&exception);
         }
    }
    return 0;
}
//---------------------------------------------------------------------------

Ну или в настройках проекта изменить последовательность

Это сообщение отредактировал(а) ksili - 3.12.2007, 10:22


--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
Vyacheslav
Дата 3.12.2007, 10:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

Репутация: 47
Всего: 59



А почему, код отоносящийся к настройке Form2, не выполнять там где этому коду самое место? А именно: тело конструктора TForm2.


--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
flintstone
Дата 3.12.2007, 11:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 18.10.2007

Репутация: нет
Всего: нет



artsb был прав. Настройки сначало надо применить к Form1. Например цвет фона, поверх всех окон и др., следуя из Form2. Если вначале попытаться создавать Form2, а затем Form1, то полетят настройки относящиеся к Form1 (т.к. она должна создаваться первой).
PM MAIL   Вверх
Fazil6
Дата 3.12.2007, 11:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 11
Всего: 60



Цитата(flintstone @  3.12.2007,  11:16 Найти цитируемый пост)
artsb был прав. Настройки сначало надо применить к Form1. Например цвет фона, поверх всех окон и др., следуя из Form2. Если вначале попытаться создавать Form2, а затем Form1, то полетят настройки относящиеся к Form1 (т.к. она должна создаваться первой).

те настройки, которые относятся к первой форме делай в ее конструкторе, а те которые к 2-й в ее конструкторе.
PM MAIL   Вверх
artsb
Дата 3.12.2007, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 39
Всего: 64



ksili правильно пишет.
Можно же сначала создать Form2 и в OnCreate считать настройки из файла, ну и по отмечать галочки напрмер или ещё что, но форму не отображать. Потом при создании Form1 считать настройки из Form2 и отобразить Form1.
Я правильно тебя понял ksili?


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
flintstone
Дата 3.12.2007, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 18.10.2007

Репутация: нет
Всего: нет



Скажите, если я вставлю
Код

         Application->CreateForm(__classid(TForm2), &Form2);
         Application->CreateForm(__classid(TForm1), &Form1);

То сначала у меня будет создаваться Form2, как не создавая дополнительных меню, мне автоматически создавать Form1, а Form2 закрывать.
PM MAIL   Вверх
Fazil6
Дата 3.12.2007, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 11
Всего: 60



Цитата(flintstone @  3.12.2007,  12:29 Найти цитируемый пост)
То сначала у меня будет создаваться Form2, как не создавая дополнительных меню, мне автоматически создавать Form1, а Form2 закрывать.

поменяв порядок создания форм ты сделаешь Form2 главной формой приложения. Не надо ничего менять в созданиях форм. Просто не надо пихать инициализацию настроек формы 2 в создание формы 1.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0595 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.