Delphi在两个窗口之间发送值 - createparams覆盖

时间:2015-03-02 06:08:18

标签: windows forms delphi send

您好我有主要表格和另外两种表格。两者都在createparams

上有这个代码
procedure TfrForm2.CreateParams(var Params: TCreateParams);
begin
  inherited CreateParams(Params);
  with Params do
  begin
    ExStyle := ExStyle or WS_EX_APPWINDOW;
  end;
end;

并且使用代码从主窗体打开(TfrForm2和TfrForm3):

with TfrForm2.Create(Application) do
  try
    Show;
  finally
  end;

所以我可以在taskabr上有3个按钮(main,form2,form3)。但是,如何在form2和form3之间发送数据(例如整数值)或从表单3(通过单击表格3上的按钮等)到前面的form2? ?

1 个答案:

答案 0 :(得分:0)

正如David Heffernan所说,最简单的方法是使用表格参考。

如果每个表单都在其单独的单元中声明,您可以将该单元添加到使用部分,这将使您可以访问该表单参考。

请注意,为了避免循环引用,您应该将其他表单单元添加到使用部分,该部分是实现部分(单元中间的部分)而不是接口部分的部分(在单位顶部)。

这样做会增加对特定单元中描述的对象,方法,变量和常量的访问权限,但它不允许您在那里派生现有对象的任何子类,除非您通过声明本地类型(在内部声明对象类型)这样做现有方法的范围)。

unit UMainForm;

interface

uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;

type
  TMainForm = class(TForm)
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  MainForm: TMainForm;

implementaion
//Add another form unit here to avoid problems with circular referencing
uses UMySecondForm;

默认情况下,delphi不会在实现使用部分中添加任何内容,因此那里没有uses子句。所以你应该自己添加它。

警告!当通过其在另一个单元中进行delcared的引用访问另一个表单时要特别注意首先检查表单引用是否确实引用了正确的表单对象(确保表单已经创建但尚未销毁),否则你将最终得到许多访问冲突错误。