Цитата:
Сообщение от Thrasher
Если просто объявить Free, то компилятор может отнести этот метод не к Data, а к Form1.
|
Как это может отнести? А может и не отнести?
Нет, так не пойдет. Во вложенности (между бегин..енд) процедуры, если встречаются одинаковые процедуры - от компонента и от компонент более высокого уровня - используется первая.
Во-первых не очень понял, как ты закрываешь настройки нажимая на form1.Button1 - у тебя там Form2.show.
Не понял так же, где у тебя открытие настроек по нажатию на Form1.Button2 - там нет показывания формы или у тебя настройки на панели?
Настроены ли у тебя кнопки, BitBtn1 как модальные?
Касательно настроек и Ацессов виолатионов.
АцессВиолатион у тебя возникает (как мне видится), изза того, что когда ты запускаешь в Button1Click таймер, в нем лейблы ссылаются на Form2.DateTimePicker1.DateTime. Как я понимаю, форма у тебя тоже не показывается. И при закрытии такая байда возникает, потому что Таймер продолжает работать, когда объект формы уже уничтожен.
Если чтото не так, тогда сорри
Посмотри в коде самой программы (в юните, где он начинается с зарезервированного слова program <имя проги>). Имя проги - это имя проекта. Тоесть в файле проекта посмотри как у тебя создаются формы. Я так понимаю что создаются последовательно:
Application.CreateForm(Form1,TForm1);
Application.CreateForm(Form2,TForm2);
Если так, то в Дельфи: Project->Options->Закладка Forms. В Auto-Create секции оставляешь только главную форму, все остальное переносишь вправо.
Чтобы отобразить форму, по нажатию на кнопку делаешь так:
var
F2: TForm2; // глобальная переменная в рамках "этого" юнита
Код:
procedure TForm1.OpenFormButtonClick(Sender:TObject)
begin
if not Assigned(F2) then
F2 := TForm2.Create(nil); // или Application вместо nil.
F2.SomeThing.enabled := true; // настраиваешь то что надо настроить
F2.SomethingElse.AnyData := 'AnyTime';
F2.ShowModal; // или F2.Show;
end;
Procedure TForm1.ButtonSaveSettingsClick(Sender: TObject);
begin
if assigned(F2) then
begin
F2.SaveSett;
F2.Close;
end;
end;
-------------------------------------------------------------------
// во второй форме
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
end;
procedure TForm2.SaveSett; // пихаешь в описании класса в секцию public
begin
// тут операции с ини файлом
end;