Определите, какая форма в активной странице, Delphi

У меня есть mainform (frmMain) с контролем страниц. При запуске pagecontrol заполняется несколькими формами, скажем, Form1, Form2 и Form3

procedure TForm1.FormCreate(Sender: TObject);
begin
   ManualDock(frmMain.PageControl1);
   show;
end;
procedure TForm2.FormCreate(Sender: TObject);
begin
   ManualDock(frmMain.PageControl1);
   show;
end;
procedure TForm3.FormCreate(Sender: TObject);
begin
   ManualDock(frmMain.PageControl1);
   show;
end;

Это прекрасно работает. Когда я затем изменяю активную страницу, я хочу, чтобы метод OnActivate вызывался в форме, соответствующей активной странице, поэтому я попробовал это;

procedure TfrmMain.PageControl1Change(Sender: TObject);
begin
  with pagecontrol1 do
  begin
     lbHeading.Caption := activepage.Caption;
     with tform(activepage) do        // <= This does 
     if assigned(onactivate) then     // <= not
     onactivate(self);                // <= work
  end;
end;

Активная страница имеет тип TTabsheet

1 ответ

Я нашел решение:

with pagecontrol1 do
begin
  with tform(activepage.controls[0]) do
  if assigned(onactivate) then
  onactivate(self);
end;
Другие вопросы по тегам