2015-03-02 31 views
0

你好,我有主窗体和另外两种窗体。两者都有上的CreateParamsDelphi在两个窗口之间发送值 - 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个按钮(主,窗口2,form3 )。但我怎样才能发送form2和form3之间的数据(例如整数值),或从窗体3(通过单击表单3上的按钮等)前面的form2? ?

+0

将表单引用存储在变量中。你为什么选择丢弃表单参考? – 2015-03-02 06:53:51

回答

0

正如David Heffernan所说的最简单的方法是通过使用表单引用。

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

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

这样做将您访问的对象,方法,变量和在特定单位delcared常数,但它不会让你获得现有对象的任何子类存在,除非你正在使用本地类型的声明,这样做(声明对象类型在现有方法的范围内)。

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不会在implementationion的使用部分添加任何内容,所以在这里没有uses子句。所以你应该自己添加它。

警告!当通过在另一个单元中被引用的引用来访问另一个表单时,要特别注意首先检查表单引用是否确实引用了正确的表单对象(确保表单已经被创建并且尚未被销毁)另一个表单将会以许多访问冲突错误。