【发布时间】:2014-01-24 18:26:43
【问题描述】:
Form 10 创建并显示 form11,form11 创建并显示 form12。然后 form12 尝试更新 form10 上的控件(成功)、form11 上的控件(访问冲突)和 form12 上的控件(成功)。为什么我在更新中间表单 form11 时遇到访问冲突。评论语句 30 和 31 不起作用,我想知道为什么。 30 正在更新中间表格。 31 是一个旁白,不相关,但它不起作用,我不确定它为什么会爆炸。
1: unit Unit10;
2:
3: interface
4:
5: uses
6: Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
7: Dialogs, StdCtrls;
8:
9: type
10: TForm10 = class(TForm)
11: Button1: TButton;
12: procedure Button1Click(Sender: TObject);
13: private
14: { Private declarations }
15: public
16: { Public declarations }
17: end;
18:
19: var
20: Form10: TForm10;
21:
22: implementation
23: uses Unit11;
24:
25: {$R *.dfm}
26:
27: procedure TForm10.Button1Click(Sender: TObject);
28: var
29: fForm11 : TForm11;
30: begin
31: fForm11 := TForm11.Create(Application);
32: fForm11.show;
33: end;
34:
35: end.
1: unit Unit11;
2:
3: interface
4:
5: uses
6: Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
7: Dialogs, StdCtrls;
8:
9: type
10: TForm11 = class(TForm)
11: Button1: TButton;
12: procedure Button1Click(Sender: TObject);
13: private
14: { Private declarations }
15: public
16: { Public declarations }
17: end;
18:
19: var
20: Form11: TForm11;
21:
22: implementation
23: uses Unit12, Unit10;
24:
25: {$R *.dfm}
26:
27: procedure TForm11.Button1Click(Sender: TObject);
28: var
29: fForm12 : TForm12;
30: begin
31: form10.Button1.Caption := 'done';
32: fForm12 := TForm12.Create(Self);
33: fForm12.show;
34: end;
35:
36: end.
1: unit Unit12;
2:
3: interface
4:
5: uses
6: Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
7: Dialogs, StdCtrls;
8:
9: type
10: TForm12 = class(TForm)
11: Button1: TButton;
12: procedure Button1Click(Sender: TObject);
13: private
14: { Private declarations }
15: public
16: { Public declarations }
17: end;
18:
19: var
20: Form12: TForm12;
21:
22: implementation
23: uses Unit11, Unit10;
24:
25: {$R *.dfm}
26:
27: procedure TForm12.Button1Click(Sender: TObject);
28: begin
29: Form10.Button1.Caption := 'Unit10';
30: //Form11.Button1.Caption := 'Unit11'; //get an access violation
31: //Form12.Button1.Caption := 'Unit12'; //get an access violation
32: Button1.Caption := 'Unit12'; //this same as 31 without Form12 prefix
33: end;
34:
35: end.
【问题讨论】:
-
我们很高兴您向新手提问,但我们希望您阅读答案并注意。
标签: delphi