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...这样的了.上边的代码就不行了."这里的代码我该怎么写.我是实在没法了...
我是新手,请各位高手帮忙!事成后加分!
难就难在怎么区别这些窗体名.并把值传过去..有详细代码请告诉我!!!
有问题找我+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 子窗体传值问题子窗体调用的主要内容,如果未能解决你的问题,请参考以下文章