Blue
Red
Green
Orange
Voilet
Slate
Dark

DELPHI的BUG? (100分)

  • 主题发起人 laozhongcheng
  • 开始时间
L

laozhongcheng

Unregistered / Unconfirmed
GUEST, unregistred user!
在FormCreate中加入代码
with TPanel.Create(Self) do
begin
DockSite := True;
Parent := Form1;
Align := alTop;
Visible := True;
Height := 200;
end;
然后将另外一个Form停靠到这个控件上
那么,拉左边的竖条将无法将Form取消停靠
(必须拉那个关闭钮)
但是如果这个Panel是设计时加入的却可以
而且如果Align为alLeft, alBottom, alRight的时候都可以
D7同样存在 是否是BUG?如何解决?
待答。多谢参与。
 
Q

qinmingzsj

Unregistered / Unconfirmed
GUEST, unregistred user!
Parent := Self; ?
Parent := Tform......
 
L

laozhongcheng

Unregistered / Unconfirmed
GUEST, unregistred user!
嗬嗬,笔误,Parent := Form1
 
M

menxin

Unregistered / Unconfirmed
GUEST, unregistred user!
确实有这个问题
 
A

astros

Unregistered / Unconfirmed
GUEST, unregistred user!
更有趣的是,设置Panel大小,而不用Align,就没事了。
 
L

laozhongcheng

Unregistered / Unconfirmed
GUEST, unregistred user!
A

astros

Unregistered / Unconfirmed
GUEST, unregistred user!
不过我用的是BCB5,在Align为alTop和alBottom时都有问题存在
我试过改变Align,发现
先Align=alTop,将窗体停靠上去后,再Align=alNone,也不行
相反,先Align=alTop,再Align=alNone,再停靠窗体,再Align=alTop,就正常
总之,当停靠窗体的小标题栏竖在左边就不行,但横在上面就可以
还有一个情况:
先Align=alTop,再Align=alNone,再停靠窗体,这时小标题栏在上面
再Align=alBottom,这时Panel的大小没变,但是跑到下面去了,
可是小标题栏不见了!
但是点住Panel最上面的地方,仍可以把停靠的窗体拖下来!
由于每一个可以停靠的Panel都有一个TDockTree在管理,
一个TDockTree又管理若干TDockZone,
而小标题栏不是停靠窗体的一部分,是由TDockZone管理的,
所以认为,分析TDockTree的源代码也许能找到一些BUG。
因为我还发现:
预先创建的TPanel的Align为alTop/alBottom,改变为alLeft/alRight后存在相似问题
反之亦然!

 
L

laozhongcheng

Unregistered / Unconfirmed
GUEST, unregistred user!
原来我用alBottom是可以的,但是现在也不正常了(Delphi真是够奇怪的[:D])。
在处理WM_LBUTTONDOWN事件时,发现加入BeginDrag停靠功能是正常的。
问题可能出现在对窗体区域的处理上,
所以可能是TDockTree中的。
正在深入研究中。也请大家继续讨论。
 
Z

zhjwjan

Unregistered / Unconfirmed
GUEST, unregistred user!
Align := alTop;
DockSite := True;

这两句不可调乱。
 
L

laozhongcheng

Unregistered / Unconfirmed
GUEST, unregistred user!
的确解决问题了
能说一下为什么?(不想看源代码了)
 
A

astros

Unregistered / Unconfirmed
GUEST, unregistred user!
to zhjwjan:
按你的方法,的确能解决问题。
但是在改变Align后,就出现我前面说的设计时加入的Panel存在的问题了
如果把alTop/alBottom该为alLeft/alRight,或者把alLeft/alRight改为alTop/alBottom就又拖不下来了
只能在改变Align前先设置DockSite=false
所以感觉很麻烦,这是不是当初设计上的疏忽?
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
933
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
顶部 底部