Показать сообщение отдельно
  #5  
Старый 17.07.2008, 14:03
Аватар для notricky
notricky notricky вне форума
Прохожий
 
Регистрация: 09.07.2008
Сообщения: 13
Репутация: 10
По умолчанию

Цитата:
Сообщение от 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;
Ответить с цитированием