Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Программа и интерфейс
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 13.10.2010, 15:06
Аватар для Vayrus
Vayrus Vayrus вне форума
Исполняемый Ретровирус
 
Регистрация: 09.08.2008
Адрес: Umbrella Corporation
Сообщения: 743
Репутация: 1293
Лампочка Сохранение состояния компонентов на форме

Приветствую, все работает, но не совсем так как хотелось бы, моя форма опций (OptionsForm) находится в AvailableForms, в ее юните забит следующий код:

Код:
....................................................................................
    CheckBox4: TCheckBox;
    CheckBox5: TCheckBox;
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  private
    { Private declarations }
  public
    { Public declarations }
    constructor Create(AOwner :TComponent); override;
  end;

var
  OptionsForm: TOptionsForm;

implementation

{$R *.dfm}

constructor TOptionsForm.Create(AOwner: TComponent);
begin
  if FileExists('Options') then
  begin
    CreateNew(AOwner);
    ReadComponentResFile('Options', Self);
  end
  else
    inherited Create(AOwner);

  { поместите здесь код в стиле 'OnCreate' }
  Self.Hide;
end;

procedure TOptionsForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
WriteComponentResFile('Options', Self);
end;

................................................................................

А в основной форме (MainForm) вызываю так:
Код:
procedure TMainForm.N1Click(Sender: TObject);
begin
OptionsForm.ShowModal;
end;

Так вот, при использовании кода сохранения и загрузки формы, форма с опциями при старте программы отображается сразу, когда как без данного кода она отображается только при нажатии кнопки вызова опций, может кто в курсе как организовать создание формы настроек и сохранение/загрузку ее настроек данным способом ?
Ответить с цитированием
  #2  
Старый 13.10.2010, 15:58
Аватар для KOOL
KOOL KOOL вне форума
Активный
 
Регистрация: 06.01.2008
Адрес: Рязань
Сообщения: 306
Версия Delphi: 2009
Репутация: 6150
По умолчанию

Я думаю, проблема в том, что форма сохраняет саму себя целиком, вместе со всеми свойствами, включая Visible, которая в момент сохранения равна true, поэтому при запуске программы это свойство устанавливается в true, и форма при этом отображается.
Можно сериализировать отдельные компоненты на форме или же просто сохранять после закрытия, а не в его момент (надеюсь сработает):
Код:
procedure TOptionsForm.SaveFrm;
begin
  WriteComponentResFile('Options', Self);
end;
...
procedure TMainForm.N1Click(Sender: TObject);
begin
  OptionsForm.ShowModal;
  OptionsForm.SaveFrm;
end;
__________________
РГРТУ - ФВТ - Системы Автоматизированного ПРоектирования. ت
Ответить с цитированием
  #3  
Старый 13.10.2010, 19:17
Аватар для Vayrus
Vayrus Vayrus вне форума
Исполняемый Ретровирус
 
Регистрация: 09.08.2008
Адрес: Umbrella Corporation
Сообщения: 743
Репутация: 1293
По умолчанию

Спасибо, да я тоже так думал, но, видать, тяжелый рабочий день сказался на умственной активности), вопрос решил таким образом:

Код:
procedure TOptionsForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
OptionsForm.Visible := FALSE;
WriteComponentResFile('Options', Self);
end;
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 09:27.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter