Delphi 在两个 windows 之间发送值 - createparams override
Delphi sending value between two windows - createparams override
您好,我有主窗体和另外两个窗体。两者在 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 之间发送数据(例如整数值)或者从 form 3 将 form2 带到前面(通过单击 form 3 上的按钮等)? ?
正如 David Heffernan 所说,最简单的方法是使用表单引用。
如果每个表单都在其单独的单元中声明,您可以将该单元添加到使用部分,这样您就可以访问该表单引用。
请注意,为了避免循环引用,您应该将另一个表单单元添加到 uses 部分,它是实现部分的一部分(单元中间的那个),而不是接口的一部分部分(设备顶部)。
这样做可以让您访问在该特定单元中声明的对象、方法、变量和常量,但不允许您派生现有对象的任何子类,除非您通过声明局部类型(声明对象在现有方法的范围内键入)。
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 不会在 implementaion uses 部分添加任何内容,因此那里没有 uses 子句。所以你应该自己添加。
警告!通过在另一个单元中声明的引用访问另一个表单时,请特别注意首先检查表单引用是否确实引用了正确的表单对象(确保表单已经创建且尚未销毁),否则您最终会得到大量访问冲突错误。
您好,我有主窗体和另外两个窗体。两者在 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 之间发送数据(例如整数值)或者从 form 3 将 form2 带到前面(通过单击 form 3 上的按钮等)? ?
正如 David Heffernan 所说,最简单的方法是使用表单引用。
如果每个表单都在其单独的单元中声明,您可以将该单元添加到使用部分,这样您就可以访问该表单引用。
请注意,为了避免循环引用,您应该将另一个表单单元添加到 uses 部分,它是实现部分的一部分(单元中间的那个),而不是接口的一部分部分(设备顶部)。
这样做可以让您访问在该特定单元中声明的对象、方法、变量和常量,但不允许您派生现有对象的任何子类,除非您通过声明局部类型(声明对象在现有方法的范围内键入)。
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 不会在 implementaion uses 部分添加任何内容,因此那里没有 uses 子句。所以你应该自己添加。
警告!通过在另一个单元中声明的引用访问另一个表单时,请特别注意首先检查表单引用是否确实引用了正确的表单对象(确保表单已经创建且尚未销毁),否则您最终会得到大量访问冲突错误。