复制Tabsheet @运行时,在编辑过程后读取值

时间:2014-02-21 22:12:37

标签: delphi

我已经找到了将编辑表单的几个实例复制到Tpagecontrol

的代码
var
   aForm : TMyForm;
   tabSheet : TTabSheet;
begin
   //Create a new tab sheet
   tabSheet := TTabSheet.Create(PageControl1) ;
   tabSheet.PageControl := PageControl1;

   //create a form
   aForm := TMyForm.Create(tabSheet) ;
   aForm.Parent := tabSheet;
   aForm.Align := alClient;
   aForm.BorderStyle := bsNone;
   aForm.Visible := true;
   tabSheet.Caption := aForm.Caption;

   //activate the sheet
   PageControl1.ActiveSheet := tabSheet;
end;

假设我运行此代码3x,我如何读回aForm.button的任何实例的值,例如。第一页/第一页?

1 个答案:

答案 0 :(得分:1)

最好的方法是保存表单的实例。目前你能够做到的唯一方法是搜索页面控件上的控件。

例如,您可以执行以下操作:

function CreateTabAndForm: TMyForm;
var
  tabSheet : TTabSheet;
begin
  //Create a new tab sheet
  tabSheet := TTabSheet.Create(PageControl1) ;
  tabSheet.PageControl := PageControl1;

  //create a form
  Result := TMyForm.Create(tabSheet) ;
  Result.Parent := tabSheet;
  Result.Align := alClient;
  Result.BorderStyle := bsNone;
  Result.Visible := true;
  tabSheet.Caption := Result.Caption;

  //activate the sheet
  PageControl1.ActiveSheet := tabSheet;
end;

但是,您需要小心这种方法,因为如果页面控件被销毁,表单可能会被破坏。

要创建标签,您可以执行以下操作:

MyForm1 := CreateTabAndForm;
MyForm2 := CreateTabAndForm;
MyForm3 := CreateTabAndForm;

要访问表单上的按钮,将是MyForm1.button。