请问如何从一个form调用另一个form中传递与返回参数值(100分)

  • 主题发起人 主题发起人 yong9898
  • 开始时间 开始时间
Y

yong9898

Unregistered / Unconfirmed
GUEST, unregistred user!
我打算制作一个条件选择的form用于选择各种过滤条件,且这个form可以被多个源调用。谢谢
 
用变量传递就可以

form.aa := 1;
form.show;
x := form.aa;
 
设置一个全局变量指向调用者
 
在TForm1的Public段设置全局变量,在其元Uses它调用就行了,定义属性也行,这样还可
以改变值时做不同的操作。
 
C++ Builder中所有的事件与方法全部以函数方式实现,因此,一个TForm类的实例可以很方便地重载它的构造函数,加入一些必要的参数,加强与外部的联系。比如在员工档案管理模块中,需要定义一个新增和修改员工档案的模块,我们可以定义一个含参的TForm类,并充分利用这个参数同时完成新增和修改两种功能。部分代码如下:
头文件定义:
private:
String EmployeeID; //定义要修改的员工的ID号
public:
__fastcall TFormEmployee (TComponent* Owner,String EmpIDString);
CPP文件中部分代码:
__fastcall TFormEmployee:: TFormEmployee (TComponent* Owner,String EmpIDString)
; ; ; ; : TForm(Owner)
{
; EmployeeID = EmpIDString; ; ; //赋值后即可在模块中使用了
}
......
在实现时,判断若EmployeeID变量不为空则修改,为空则实现新增。这样既可明晰模块间的接口关系。又可减少代码冗余。提高工作效率。但Delphi语法结构与C++有所不同,它没有象以上的这种构造函数。直接实现TForm接口不大方便。也不利于模块间的接口实现。经本人的实践,找到一种简单方便的实现方法,可以轻易地解决这个问题。在需要接口的TForm单位中,定义一个接口函数,还以上面的例子描述,则这个函数定义如下:
声明变量:
private:
EmployeeID: String; //定义要修改的员工的ID号
......
function ShowFormEmployee(EmpIDString:String):Boolean;
begin
Application.CreateForm(TFormEmployee, FormEmployee);
try
EmployeeID := EmpIDString;
FormEmployee.ShowModal;
finally
FormEmployee.Free;
end;
end;
以上代码在Win98环境下Delphi5中调试通过。
如何,很简单吧,只要每一个模块定义一个这样的接口函数,使用起来就很方便,而且模块间的接口关系非常明白。与别人的编程接口时,只需要提供这个函数的用法即可。
 
我刚写完一个,使用一个公用form,加一个DBGrid。
看看对你有没有一点启发。
n是一个全局变量。
================================
procedure TForm1.ED4DblClick(Sender: TObject);
var
; XSQL:String;
begin
; if Ed5.Text='' then
; ; ;XSQL:='SELECT SOURCE FROM STOCK GROUP BY SOURCE'
; else
; ; ;XSQL:='SELECT SOURCE FROM STOCK WHERE SOURCE LIKE '+''''+Ed5.Text+'%'+''''+' GROUP BY SOURCE';
; DM1.ClientDataSet1.Close;
; DM1.ClientDataSet1.CommandText:=XSQL;
; DM1.ClientDataSet1.Open;
; Form2.Caption:='½Ð¿ï¾Ü¼t°Ó...';
; Form2.n:=8;
; Form2.DBGrid1.Columns[0].FieldName:='SOURCE';
; Form2.DBGrid1.Columns[0].Title.Caption:='¼t°Ó';
; Form2.ShowModal;
end;

=====================================
procedure TForm2.DBGrid1DblClick(Sender: TObject);
begin
; case n of
; 1: begin
; ; ; ;Form1.E2.Text:=DBGrid1.SelectedField.Text;
; ; ; ;Form1.E3.SetFocus;
; ; ; ;Close;
; ; ;end;
; 2: begin
; ; ; ;Form1.E4.Text:=DBGrid1.SelectedField.Text;
; ; ; ;Form1.E5.SetFocus;
; ; ; ;Close;
; ; ;end;
; 3: begin
; ; ; ;Form1.E5.Text:=DBGrid1.SelectedField.Text;
; ; ; ;Form1.E6.SetFocus;
; ; ; ;Close;
; ; ;end;
; 4: begin
; ; ; ;Form1.E6.Text:=DBGrid1.SelectedField.Text;
; ; ; ;Form1.E7.SetFocus;
; ; ; ;Close;
; ; ;end;
; 5: begin
; ; ; ;Form1.E3.Text:=DBGrid1.SelectedField.Text;
; ; ; ;Form1.E9.SetFocus;
; ; ; ;Close;
; ; ;end;
; 6: begin
; ; ; ;Form1.E9.Text:=DBGrid1.SelectedField.Text;
; ; ; ;Form1.E10.SetFocus;
; ; ; ;Close;
; ; ;end;
; 7: begin
; ; ; ;Form1.Ed3.Text:=DBGrid1.SelectedField.Text;
; ; ; ;Form1.Ed4.SetFocus;
; ; ; ;Close;
; ; ;end;
; 8: begin
; ; ; ;Form1.Ed4.Text:=DBGrid1.SelectedField.Text;
; ; ; ;Form1.Ed5.SetFocus;
; ; ; ;Close;
; ; ;end;
; 9: begin
; ; ; ;Form1.Ed5.Text:=DBGrid1.SelectedField.Text;
; ; ; ;Form1.Ed6.SetFocus;
; ; ; ;Close;
; ; ;end;
; 10: begin
; ; ; ; Form1.Ed6.Text:=DBGrid1.SelectedField.Text;
; ; ; ; Form1.Ed7.SetFocus;
; ; ; ; Close;
; ; ; end;
; 11: begin
; ; ; ; Form1.Ed7.Text:=DBGrid1.SelectedField.Text;
; ; ; ; Form1.Ed8.SetFocus;
; ; ; ; Close;
; ; ; end;
; 12: begin
; ; ; ; Form1.Ed8.Text:=DBGrid1.SelectedField.Text;
; ; ; ; Form1.Panel7.SetFocus;
; ; ; ; Close;
; ; ; end;
; 13: begin
; ; ; ; Form1.Edit2.Text:=DBGrid1.SelectedField.Text;
; ; ; ; Form1.Edit3.SetFocus;
; ; ; ; Close;
; ; ; end;
; 14: begin
; ; ; ; Form1.Edit3.Text:=DBGrid1.SelectedField.Text;
; ; ; ; Close;
; ; ; end;
; 15: begin
; ; ; ; Form3.Edit3.Text:=DBGrid1.SelectedField.Text;
; ; ; ; Form3.Edit4.SetFocus;
; ; ; ; Close;
; ; ; end;
; 16: begin
; ; ; ; Form3.Edit4.Text:=DBGrid1.SelectedField.Text;
; ; ; ; Form3.CheckBox1.SetFocus;
; ; ; ; Close;
; ; ; end;
; 17: begin
; ; ; ;Form1.E8.Text:=DBGrid1.SelectedField.Text;
; ; ; ;Form1.E3.SetFocus;
; ; ; ;Close;
; ; ; end;
; 18: begin
; ; ; ;Form4.Edit3.Text:=DBGrid1.SelectedField.Text;
; ; ; ;Form4.Edit4.SetFocus;
; ; ; ;Close;
; ; ; end;
; 19: begin
; ; ; ;Form4.Edit4.Text:=DBGrid1.SelectedField.Text;
; ; ; ;Close;
; ; ; end;
end;
end;
=====================================================
给分吧。
 
谢谢大家。
 
多人接受答案了。
 
后退
顶部