还是控件的生成顺序问题(20分)

  • 主题发起人 主题发起人 浪边人
  • 开始时间 开始时间

浪边人

Unregistered / Unconfirmed
GUEST, unregistred user!
见:http://www.delphibbs.com/delphibbs/dispq.asp?lid=528203
按上帖的方法直接修改dfm也不行.程序一运行.dfm中的创建顺序又还原了.怎么调整都没用?
各位可以在窗体上放这样四个控件:Label1 Edit1 Label1 Edit2.无论你按什么顺序放上去.
最后在dfm中生成的顺序绐终是Label1 Label1 Edit1 Edit2.
我是在动态删除窗体上的部分控件后对窗体上的剩余控件进行重新排列时遇到此难题的.
 
最后在dfm中生成的顺序绐终是Label1 Label2 Edit1 Edit2.
 
这个关系很大吗?重新排也不是很大的问题呀!
 
To 天真:
假定原来是Label1 Edit1 Label2 Edit2 Label3 Edit3
我将Label2 Edit2删除,再对剩下的重新排列.应排成Label1 Edit1 Label3 Edit3
但无论怎么操作,最后排出来的都是Label1 Label3 Edit1 Edit3
 
你想解决什么问题?
 
可以Q我,44868052
 
源代码如下:
TControl *ChildControl;
for(int i=0;i<Panel12->ControlCount;i++)
{
ChildControl=Panel12->Controls;
if(i==0)
{
ChildControl->Top=12;
ChildControl->Left=12;
}
else
{
ChildControl->Top=Panel12->Controls[i-1]->Top;
ChildControl->Left=Panel12->Controls[i-1]->Left+Panel12->Controls[i-1]->Width+20;
if((Panel12->Controls->Left+Panel12->Controls->Width)>(Panel12->Width))
{
ChildControl->Top=Panel12->Controls[i-1]->Top+Panel12->Controls[i-1]->Height+12;
ChildControl->Left=12;
}
}
}
以上代码运行后,总是将Label类型的控件先按顺序排放后再排Edit类型的控件.即出现我说
的问题.
 
现在的关键问题是:
大家可以任意放几个控件在面板上.再运行这段代码.就看出问题来了:
它是按类型来排列的.即排完了某一类型的控件后再排另一类型.

以下是天真的建议:(QQ记录)
(2002-03-18 13:07:06)
那我给你一个方法好了!
用一个数组或stringlist保存LABEL的位置
再用一个循环,把edit与label对齐不就行了?

(2002-03-18 14:29:07)
把控件的信息放入数据库中,到时,根据它来生成.
感谢天真对此问题的关注.

请大家再想想有没有简单的办法?
 
接受答案了.
 
后退
顶部