Как показать форму или получить значение из той же формы в TTabSheet?
У меня есть форма, которую я отображаю двумя разными способами. Первый - дочерний элемент TTabSheet в TPageControl. Мне не нужно собирать какие-либо данные, и это отлично работает.
Первый путь
with TTabSheet.Create(APageControl) do
begin
PageControl := APageControl;
Caption := 'Child Form Caption Info';
APageControl.ActivePageIndex := PageIndex;
end;
with TMyDefinitionForm.CreateFor(Application, 'DEF_TYPE', 'Child Form Caption Info') do
begin
Parent := APageControl.Pages[APageControl.ActivePageIndex];
Align := alClient;
Name := 'ChildFormName';
Show;
end;
Второй - создание другой формы детализации, и должны быть возвращены некоторые необходимые значения из той же формы. Но когда я создаю эту форму как первую, я не могу отобразить форму как ShowModal в TTabSheet. (Он не может быть активным или сфокусированным)
Второй способ
var
AComponent: TComponent;
begin
{This is different detail form and its owner is DashboardForm which has TPageControl}
AComponent := (Self.Owner.FindComponent('APageControl') as TPageControl);
with TTabSheet.Create(AComponent) do
begin
PageControl := (AComponent as TPageControl);
Caption := 'Child Form Caption Info';
(AComponent as TPageControl).ActivePageIndex := PageIndex;
end;
with TMyDefinitionForm.CreateFor(Self, 'DEF_TYPE', 'Child Form Caption Info') do
begin
Parent := (AComponent as TPageControl).Pages[(AComponent as TPageControl).ActivePageIndex];
Name := 'ChildFormName';
Show; { If I change this to ShowModal, I can't click to my form }
end;
txtFieldOne.Text := DataModuleObject.Field; {sample usage}
txtFieldTwo.Text := DataModuleObject.Field2; {sample usage}
SomeVariables:= DataModuleObject.Field3; {sample usage}
end;
Проблема: у меня есть DataModule, который имеет объекты данных для общего пользования. Когда я создаю эту дочернюю форму, я должен установить какое-то значение для этих объектов, и после закрытия дочерней формы эти данные должны быть установлены на мою первую форму. Для этого я всегда использовал ShowModal, затем в следующих строках я установил эти значения в мою первую форму. Но сейчас я не могу открыть ShowModal в TTabSheet.
Вопрос: есть ли способ получить эти значения из дочерней формы?
Бонусный вопрос: я могу использовать ShowModal, тогда я могу получить эти значения, если я просто создаю эту форму. Должен ли я создать форму как обычно в TTabSheet без установки родительского контроля?
Примечание: использование XE10.1 Berlin