我不认为我会做这种方式,但这个工程:
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