delphi 子窗体传值问题子窗体调用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了delphi 子窗体传值问题子窗体调用相关的知识,希望对你有一定的参考价值。

我想通过MDI窗体实现以下功能:
<简化实例>
主窗体: 一个菜单 menubutton1.
子窗体A: 一个EDIT1控件,一个BUTTON1按钮。
子窗体B: 一个EDIT1控件,一个BUTTON1按钮。
功能说明:
1.点击menubutton1,调出子窗体A。
2.在子窗体A上单BUTTON1按钮弹出子窗体B。 然后给子窗体B的EDIT1控件写入内容,之后点击子窗体B上的BUTTON按钮,让子窗体B的EDIT控件的值传给子窗体A的edit控件。并关闭子窗体B.
3.当子窗体A只弹出一个来时好传值,如果是两个或多个子窗体A,并且要求是“是哪个子窗体A的BUTTON1调出的子窗体B,就让子窗体B的edit值付给哪个子窗体A的edit."<有点像绕口令,请大家仔细看一下应该能明白>

只要实现第3步就可以了。
其实,实际例子是这样的。 我创建了一子窗体A,上边有一个GRID控件。然后创建一个子窗体B,通过在B上的EDIT来付值,用GRID的FILTER来过滤EDIT中会给的值从而实现在GRID中查找筛选数据的功能。
我是这么写的:
在子窗体B的按钮事件中写:"
子窗体A.grid.Filter:=字段+' like '+#39+'%'+trim(edit1.Text)+'%'+#39;
子窗体A.grid.Filted:=true;
.
如果只弹出一个子窗体A是行的.可是如果弹出多个.子窗体A的NAME就变成"子窗体A_1;子窗体A_2;子窗体A_3...这样的了.上边的代码就不行了."这里的代码我该怎么写.我是实在没法了...

我是新手,请各位高手帮忙!事成后加分!
难就难在怎么区别这些窗体名.并把值传过去..有详细代码请告诉我!!!

参考技术A 多个子窗体A,它的form name是不一样的,赋值时只要区别开窗体名就应该可以实现的 参考技术B 也不知道这样的例子对不对,反正我临时写的,你就试试吧。把这些代码有选择性的复制到你的代码编辑器里。自己还要改点东西的。。。
有问题找我+QQ:445159075,我最近也在学delphi哈~
interface

type
tform1=class(tform)
......
主窗口的定义和以下的事件都省略


type
tformb=class(tform)
edit1:tedit;
button1:tbutton;
procedure button1click(sender:tobject);
end;

type
tforma=class(tform)
grid1:tgrid;
edit1:tedit;
button1:tbutton;
procedure button1click(sender:tobject);
end;

var form1:tform1;

implementations
$R.res

procedure tform1.menubutton1click(sender:tobject);
var
forma:tforma;
begin
forma:=tforma.create(self);
forma.name:='子窗体a';
forma.parent:=self;
forma.show;
end;

procedure tforma.button1click(sender:tobject);
var
formb:tformb;
begin
formb:=tformb.create(self);
formb.name:='子窗体B';
formb.parent:=self;
formb.show;
end;

procedure tformb.button1click(sender:tobject);
begin
try
if parent is tforma then
with (parent as tforma) do
begin
edit1.text:=self.edit1.text;
grid1.filter:='';//因为你给的不全我就不写这个了
end;
finally
self.close;//也可以编程使之手动关闭
end;
//剩下的就是你自己原来的程序了
end;

参考资料:《delphi面向对象编程思想》-刘艺著

本回答被提问者采纳

以上是关于delphi 子窗体传值问题子窗体调用的主要内容,如果未能解决你的问题,请参考以下文章

Delphi中子窗体如何继承父窗体

c#子窗体控制父窗体的显隐

C#中子窗体操作父窗体的变量

js 关闭子窗体时如何刷新父窗体

C#winform中父窗体打开后下面有一排导航,导航打开子窗体,子窗体停靠在父窗体中间

Winform 父窗体的灰色部分修改