Как показать форму или получить значение из той же формы в 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

0 ответов

Другие вопросы по тегам