【发布时间】:2014-01-24 00:11:18
【问题描述】:
从一个表单,我创建并显示第二个表单。从第二个表单我想更新第一个表单上的控件。但我得到访问冲突。我可以让它与自动创建中的表单一起使用,但当我使用 create 方法创建表单时,我会遇到违规行为。
下面是一个例子。如果我在自动创建中使用表单 11 运行它,它可以工作(我更新第一个表单中的按钮标题)。但是,如果在第 10 单元中,如果我注释掉 form11.show;,并且我取消注释创建和显示,然后从自动创建中取出 Form11,我会遇到访问冲突。
问题 - 当我使用 create 方法创建表单时,如何从显示的表单更新父表单。
单元10
unit Unit10;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm10 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form10: TForm10;
implementation
uses Unit11;
{$R *.dfm}
procedure TForm10.Button1Click(Sender: TObject);
var
fForm : TForm11;
Begin
// fForm := Form11.Create(Self); //This and next line give me access violation
// fForm.Show; // with form11 out of autocreate
form11.show; //This works with form11 in the autocreate.
end;
end.
单元 11
unit Unit11;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm11 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form11: TForm11;
implementation
uses unit10;
{$R *.dfm}
procedure TForm11.Button1Click(Sender: TObject);
begin
form10.button1.caption := 'Changed';
end;
end.
【问题讨论】:
标签: delphi