delphi窗体的问题

Posted

tags:

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

我想做一个软键盘但是现在 想让键盘和我的主窗体是相对位置不变的。就是窗体1动窗体2也动但是他们的相对位置不变的如何做谢谢帮忙

假设form1为主动窗口,form2为从动窗口,在form2上加一个Timer控件,事件间隔设为50ms,ontimer事件中写入下面简单语句:
form2.Top:= form1.Top+你所设定的上下间隔;
form2.Left:=form1.Left+你所设定的左右间隔;

这样就可以了。别忘了,在各自的unit单元里引用对方的单元文件:uses XXXX;

运行看一看,拖动form1,form2应该会以不变的相对位置随着form1移动。

如果还有什么问题,find me...^^
参考技术A 判断两窗体的距离!不停的判断!!!

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 子窗体传值问题子窗体调用

delphi mdi子窗体显示和释放的问题

delphi 一个窗体添加多组单选框问题

delphi模态窗体最小化会隐藏的问题

delphi 子窗体如何调用父窗体的方法

如何设计delphi 窗体里面的组件居中