我不認爲我會做這種方式,但這個工程:
unit UfrmSubForm;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TfrmSubForm = class(TForm)
edit1: TEdit;
private
procedure Set_EditText(const Value: String);
{ Private declarations }
public
{ Public declarations }
class function Execute(Temp: String): TModalResult;
property EditText: String write Set_EditText;
end;
function SubFormExecute(Temp: String): TModalResult;
implementation
{$R *.dfm}
{ TfrmSubForm }
class function TfrmSubForm.Execute(Temp: String): TModalResult;
var
frmSubForm: TfrmSubForm;
begin
frmSubForm := TfrmSubForm.Create(Application);
try
frmSubForm.EditText := Temp;
Result := frmSubForm.ShowModal;
finally
frmSubForm.Free;
end;
end;
procedure TfrmSubForm.Set_EditText(const Value: String);
begin
edit1.Text := Value;
end;
end.
然後用它從第一種形式,像這樣:
procedure TForm1.btnExecuteClick(Sender: TObject);
begin
TfrmSubForm.Execute('Some Text');
end;
返回一個ShowModal
的狀態的確沒有傷害,你永遠不知道你什麼時候需要它。
您可能不應直接訪問其他對象(窗體或其他)的屬性;如果TEdit將來成爲TLabel,則只需更改一次frmSubForm,而不是訪問frmSubForm.Edit.Text的地方,請使用父對象的propery。
來源
2011-12-29 14:18:04
TDC
顯示你的代碼,請! – evilone 2011-12-29 09:41:56
如果表單沒有被自動創建,那麼它的使用形式參照的授權?像frmSubForm.edit1.text? – Nalu 2011-12-29 10:06:35