我試圖從我創建的對象訪問用戶名字符串,並以不同的形式使用它。Delphi 10 - 如何在兩種表單之間共享對象?
我不想重新創建對象,否則用戶名字段將被清除。
我怎樣才能檢索到從第二表格對象的用戶名,如果我已經創建,並從第一種形式(其中我做obj.create(sUsername)
?
設置的用戶名我已經嘗試過創建一個名爲function GetUsername : string
到funtion發送結果,但它最終給我一個違規錯誤的另一種形式?有人可以給我一個基本的例子如何「呼叫」從另一種形式發送到它的OOP的值左右
UPDATE - 對不起,這裏是我想要做的一個例子,但我得到一個錯誤違規,你可以看到我沒有釋放對象,因爲我想保留值對於其他形式:
**First Form :**
unit SendUsername_u;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, clsUsername, GetUsername_u;
type
TForm1 = class(TForm)
edtUsername: TEdit;
Button1: TButton;
btnShowOtherForm: TButton;
procedure Button1Click(Sender: TObject);
procedure btnShowOtherFormClick(Sender: TObject);
private
objUsername: Ttest;
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.btnShowOtherFormClick(Sender: TObject);
begin
Form1.Hide;
form2.show;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
objUsername := Ttest.create(edtUsername.Text);
end;
end.
第二形態:
unit GetUsername_u;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, clsUsername;
type
TForm2 = class(TForm)
btnGetUsername: TButton;
procedure btnGetUsernameClick(Sender: TObject);
private
objUsername: ttest;
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
procedure TForm2.btnGetUsernameClick(Sender: TObject);
begin
ShowMessage(objUsername.GetUsername);
end;
end
OOP /類:
unit clsUsername;
interface
uses
SysUtils;
type
Ttest = class(TObject)
private
fUsername: string;
public
constructor create(sUsername: string);
function GetUsername: string;
end;
implementation
{ Ttest }
constructor Ttest.create(sUsername: string);
begin
fUsername := sUsername;
end;
function Ttest.GetUsername: string;
begin
Result := fUsername;
end;
end.
顯示您嘗試過的。 –
通常,如果一個對象(在本例中是一個表單)持有對另一個對象(在本例中是另一個表單)的引用,那麼它可以將消息發送到該對象。因此,如果表單A有一個對象發送到表單B並具有對錶單B的引用,則表單B可以公開功能來接受該對象並對其執行某些操作。這是所有*非常*一般,但是,因爲我們看不到您的代碼。 – David
如果兩種形式需要訪問同一個對象,則應該在一個單獨的單元中定義和實例化,這兩種形式都可以在其使用條款中引用。請出示相關的代碼以獲得更具體的建議。 –