Поиск:

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


Эксперт
****


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

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



Form2 вообще можно создать сначала невидимой, если уж так надо.

А вообще насколько я понял настройка одной формы не зависит о другой, а просто настройка зависит от содержимого ini-файла, а читается он в одной из форм. Надо читать его в первой создаваемой форме. А к настройке каждой формы применять при каждой (или при первой) её визуализации - событие OnShow


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


Новичок



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

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



Это-то понятно Fazil6, что главной формой будет теперь Form2. Но у меня на Form2 висит только менюшка с настройками, а всё остальное на Form1. Если я буду создавать сначала Form2, то я никак не смогу вернуться в Form1 без дополнительной менюшки, а нужно чтобы показывалась Form1.

Это сообщение отредактировал(а) flintstone - 3.12.2007, 13:03
PM MAIL   Вверх
Fazil6
Дата 3.12.2007, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(ksili @  3.12.2007,  12:41 Найти цитируемый пост)
 а просто настройка зависит от содержимого ini-файла, а читается он в одной из форм

что мешает читать ее в каждой из форм и извлекать то, что нужно этой форме?
PM MAIL   Вверх
flintstone
Дата 3.12.2007, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Мешает то, что в главной форме надо загружать параметры, которые показаны на Form2.
PM MAIL   Вверх
Sharkfire
Дата 3.12.2007, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Я решаю проблему так.... 
Я создал класс TOptions и в нём описал все нужные мне переменные,
и сделал метод Save & Load.
Описал переменную TOptions * Options в хедере главной формы.

И получил к ней досутп из втрой формы.
Вот последовательность вызова:

В конструкторе главной формы вызваю конструктор класа, вызываю метод Лоад,
в конструкторе дочерней формы, анализирую переменные класса (Form1->Options->...)

PM MAIL ICQ   Вверх
flintstone
Дата 3.12.2007, 20:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Попробую Sharkfire. Мне тут тоже подсказали, создать сначала какие-либо глобальные переменные, а потом к ним обратиться через Form2. Чем-то похоже на твой вариант.
PM MAIL   Вверх
flintstone
Дата 3.12.2007, 20:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Вот ещё один способ, может кому пригодится
Код

void __fastcall TForm1::FormShow(TObject *Sender)
{
  TIniFile *IniSettings = new TIniFile(ExtractFilePath(Application->ExeName)+"Settings.ini");
 if(IniSettings->ReadBool("Settings","Autorun", false)==true)
 {
  frSetting->CheckBox1->Checked=true;
  frSetting->ButtonApplyClick(Sender);
 }
 else
 {
  frSetting->CheckBox1->Checked=false;
  frSetting->ButtonApplyClick(Sender);
 }
  delete IniSettings;
}


Только это для каждого CheckBox'а надо писать новый if.
PM MAIL   Вверх
ksili
Дата 4.12.2007, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(flintstone @  3.12.2007,  18:07 Найти цитируемый пост)
в главной форме надо загружать параметры, которые показаны на Form2

Исчо раз говорю, эти параметры только показаны на Form2, а существуют они и вне её! в ini-файле


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


Опытный
**


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

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



Можно выполнять инициализацию дополнительных параметров не в OnCreate, а OnShow. к тому моменту уже все создано. Можно в таймере или в Idle проверять Showing, после чего инициализировать.
Цитата(flintstone @  2.12.2007,  21:48 Найти цитируемый пост)
Компонент Storage Library, как я понял, подходит только к Delphi, и притом он платный.

У меня есть старая версия Storage, ни какой лицензии с меня не требовала и работает уже несколько лет без проблем.
Она подходит и к С++ (Builder 6)



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


Эксперт
****


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

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



Сколько шуму из ничего. Неужели нельзя просто использовать приницип: любая форма самодостаточна и может сама прочитать свои настройки. Соответственно код по чтению настроек и инициализации настроек разместить в конструкторах.
И еще раз для всех, использующих OnCreate: использование OnCreate - это дельфинизм. OnCreate введен в только потому, что в Delphi отсутствует такое понятие, как конструктор. В С++Builder  предпочтительнее использовать для этих целей тело конструктора, о чем в хелпе недвусмысленно указано разработчиками Borland

Добавлено через 4 минуты и 20 секунд
Цитата(flintstone @  3.12.2007,  14:07 Найти цитируемый пост)
Мешает то, что в главной форме надо загружать параметры, которые показаны на Form2. 

А зачем загружать в главной форме то, что используется  Form2 ?
Ну а если даже частично Form2 и Form1 использует  одни и теже параметры, то что это меняет. Почему их нельзя загрузить дважды?




--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

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

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

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

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


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

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


 




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


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

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