Мое предложение состоит в том, чтобы отделить данные от GUI, потому что это вызывает вашу проблему. Если у вас есть форма, которая собирает данные от пользователя, тогда вы должны отличить данные от формы (TForm).
Например, предположим, что у вас есть экземпляр TForm и форма, на которой создается три поля, имя пользователя, возраст и местоположение. Вы хотите, чтобы пользователь вводил эти древовидные объекты, но когда пользователь закрывает форму, вы должны передать вставленные данные на какой-либо объект. Форма закрывается, она освобождается, но объект сохраняется. Затем вы передаете этот объект вашему объекту-менеджеру.
Простой пример:
Это ваша запись, которая будет содержать данные
type
TGatheredData = record
Name: String[40];
Age: Byte;
Location: String[40];
end;
Вашего TForm1 может иметь фильм конструктора:
constructor TForm1.Create(AOwner: TComponent; var GatheredData: TGatheredData);
begin
inherited Create(AOwner);
FGatheredData := GatheredData;
//you may want to deserialize GatheredData here and show the data in your form controls
end;
Вы называете его, пройти GatheredData, а затем вы показываете свою форму.
Затем, при закрытии формы, вы выбираете обновление данных из элементов управления формы.
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if Self.ModalResult = mrOk then
begin
//serialize your object
FGatheredData.Name := '';//name taken from control f.e. TEdit
FGatheredData.Age := '';//name taken from control f.e. TSpinButton
FGatheredData.Location := '';//name taken from control f.e. TEdit
end;
end;
Имея эту запись данных, вы можете передать ее таким же образом своему объекту-менеджеру. Вы отделили данные от GUI таким образом, и вы можете легко подключить свою запись к нескольким различным формам.
Не забудьте объявить свой тип записи на внешнем устройстве и использовать это устройство в своем блоке управления и блоке.
Надеюсь, это немного поможет.
могли бы вы рассказать немного о ваших формах. Я не уверен, что я вполне понимаю, какие формы у вас есть, и кто их инициировал, и кто должен создавать объект, и передать его кому. – Ivan
Вся программа такова: заставка запускает форму (form1) для получения данных от пользователя. и когда пользователь нажимает OK на form1, ему необходимо отправить полученные данные другому классу (менеджеру), чтобы создать объект с этими данными и использовать его. Оба всплеска и form1 должны быть закрыты, и после отправки я их больше не нуждаюсь. – Mahm00d