|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
Сохранение состояния компонентов на форме
Приветствую, все работает, но не совсем так как хотелось бы, моя форма опций (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
|
||||
|
||||
Я думаю, проблема в том, что форма сохраняет саму себя целиком, вместе со всеми свойствами, включая Visible, которая в момент сохранения равна true, поэтому при запуске программы это свойство устанавливается в true, и форма при этом отображается.
Можно сериализировать отдельные компоненты на форме или же просто сохранять после закрытия, а не в его момент (надеюсь сработает): Код:
procedure TOptionsForm.SaveFrm; begin WriteComponentResFile('Options', Self); end; ... procedure TMainForm.N1Click(Sender: TObject); begin OptionsForm.ShowModal; OptionsForm.SaveFrm; end; РГРТУ - ФВТ - Системы Автоматизированного ПРоектирования. ت |
#3
|
||||
|
||||
Спасибо, да я тоже так думал, но, видать, тяжелый рабочий день сказался на умственной активности), вопрос решил таким образом:
Код:
procedure TOptionsForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin OptionsForm.Visible := FALSE; WriteComponentResFile('Options', Self); end; |