在Dll中新建两个窗口,要求第一个窗口能调用到第二个窗口中的数据。代码如下,但是出错了
窗口新建:
procedure TForm1.CustomItem5Click(Sender: TObject);
begin
with TForm2.Create(self) do
begin
ShowModal ;
Free;
end;
SetFocus;
end;
打开第二个窗口后,
procedure TForm2.Btn_AddtClick(Sender: TObject);
begin
form1.edit1.text:=edit2.text;
self.close; //关闭form2,希望Form1.Edit1中的内容=form2.edit2
end;
出错:Access violation at address 01879062 in module 'Report.dll '.Read of address 000003A0.
[解决办法]
procedure TForm1.CustomItem5Click(Sender: TObject);
begin
with TForm2.Create(self) do
begin
Show ;
end;
SetFocus;
end;
打开第二个窗口后,
procedure TForm2.Btn_AddtClick(Sender: TObject);
begin
form1.edit1.text:=edit2.text;
self.close; //关闭form2,希望Form1.Edit1中的内容=form2.edit2
end;
[解决办法]
楼主是调用Dll,创建form1的时候出错吧?上面的代码应该没问题
[解决办法]
procedure TForm2.Btn_AddtClick(Sender: TObject);
begin
form1.edit1.text:=edit2.text; ------------------------是这里出错吧?
self.close; //关闭form2,希望Form1.Edit1中的内容=form2.edit2
end;
你的TFORM1创建的时候没有将其赋给Form1
[解决办法]
那你创建form1的时候这样写:
form1:=Tform1.Create(nil);
[解决办法]
procedure TForm1.CustomItem5Click(Sender: TObject);
begin
with TForm2.Create(self) do
begin
ShowModal ;
Free;
end;
SetFocus;
end;
procedure TForm2.Btn_AddtClick(Sender: TObject);
begin
//form1.edit1.text:=edit2.text;//此form1非彼form1啊
TForm1(Owner).Edit1.Text := edit2.Text
self.close;
end;
[解决办法]
同意楼上的,个人觉得你因该在TForm2中定义一个事件,在TForm1中引用