У меня есть объект, созданный в Form1, и я хотел бы иметь доступ к одному из его полей в Form2. Я попытался это сделать, и никто не может дать ответ, который я могу понять. Пожалуйста, извините меня, но я новичок.Как передать объект во вторую новую форму Delphi
Form1
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
Ttest=class
public
sName:string;
end;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
end;
var
Form1: TForm1;
implementation
uses Unit2;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
myObj:Ttest;
begin
myObj.Create;
myObj.sName := 'Name';
Form2.Show;
end;
end.
Form2
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm2 = class(TForm)
Button2: TButton;
procedure Button2Click(Sender: TObject);
end;
var
Form2: TForm2;
implementation
uses Unit1;
{$R *.dfm}
procedure TForm2.Button2Click(Sender: TObject);
begin
ShowMessage(myObj.sName);//This is not working
end;
end.
Прежде всего вам нужно узнать о построении экземпляров объектов, вы не создаете экземпляр Ttest. Вы даже не создаете Form2, я считаю, что вы вставили какой-то поддельный код. Во-вторых, myObj не является полем Form1, это локальная переменная в некотором методе. Вы можете получить доступ к нему только тем же способом, который объявлена переменной. –
Хорошо, я отредактировал код, чтобы вытащить создание. Он компилируется и запускается, если я не пытаюсь показать ShowMessage myObj. Вместо этого покажите еще какую-нибудь «строку» ... Итак, я могу получить доступ только к myObj в Form1? – user3715962
Только в Button1Нажмите, если вы не объявите myObj в 'интерфейсе' или не сделаете это поле TForm1. Вы создаете Ttest, например myObj: = Ttest.Create; –