当前位置:主页>销售管理软件> 列表

如何在一个窗体调用另一个窗体,并获得该窗体返回值后继续程序 找速达软件

进销存软件版1楼: 如何在一个窗体调用另一个窗体,并获得该窗体返值后继续程序?
(类似inputbox函数)?

2楼: Form2:=TForm2.create(self);
if Form2.modalresult=mrok then
edit1.Text:=form2.
Form2.showmodal 如金蝶进销存软件

3楼: 不是这样,我是说在有两个窗体,form1与form2,form2中有几个输入框如(edit1、edit2……),然后在form1中Button1Click中调用form2,并获得form2中edit1、edit2的值,再后根据该值再进一步运行程序,就如使用inputbox函数一样,
如:
procedure TForm1.Button1Click(Sender: TObject);
var
a,b:string;
begin
a:=(调用form2中并获得edit1的值)
b=(调用form2中并获得edit2的值)
if a、b=某设定值 then
^^^^^^^^^^

end;

4楼: var
a,b:string;
begin
with TForm2.create(self) do //创建
begin
showModal;//显示
a := edit1.Text;//获取值
b := edit1.Text;
Free;//释放
end;
if a <> b then Close;//根据结果进行处理
end;

5楼: 记得Uses窗体的单元文件

6楼: 在unit1(是form1的单元文件)中的uses 加入unit2,然后在在unit2 中的implementation


下面加上uses unit1 (一定要放在这里)
然后在按钮事件中执行以下
begin
form1.caption:=edit1.text;
end;
不过这个方法不太好,大家谁有更好的方法来共享一下啊。。

进销存软件版7楼: 简单的方法是,如果返回字符串,用caption,返回整数用tag,
如果复杂类型,自定义 属性 
private

publish

...

8楼: 以上提的方法都是需要相互包含,
用互相包含的方法不好(就是在unit1用uses unit2,在unit2中用uses unit1),因为form2我是想做成一个通用的调用窗口,假如有几个窗体调用的话,那不是要包含几个窗体,这种方法不好。

9楼: 必须包含的
如果不包含,Delhpi编译的时候可能会找不到

10楼: 应该有别的办法!

11楼: 用showModal方法就不用互相包含,只需在调用的窗体加入要调要窗体的单元文件即可。

12楼: 好,问题已解决,感谢royal1442和swns. 如速达软件

13楼: 多人接受答案了。