窗体的 FormState 出界?------ 已经解决,散分 (100分)

  • 主题发起人 cqbaobao
  • 开始时间
C

cqbaobao

Unregistered / Unconfirmed
GUEST, unregistred user!
显示一个窗体(Form2.Show)时出错,
procedure TCustomForm.SetVisible(Value: Boolean);
begin
if fsCreating in FFormState then // 出错,
...........

查看 FFormState 的值,结果为:[fsCreating..fsModal,fsActivated..(out of bound) 7]

这是怎么回事?哪来的越界呢?

急盼大虾的答覆。
 
给的程序不完整,没法判断。
 
procedure TCustomForm.SetVisible(Value: Boolean);
begin
if fsCreating in FFormState then
.....

这是 VCL 的源码 Forms.Pas 里的,错误出在此处。

我也不知道跟哪个部分有关,全贴出来也不可能,
我想问问有没有遇到类似情况的,应该从哪些方面解决?

Form2 显示前有 28 种选择(应该跟 Form2 没关系),选完后就 Form2.Show;
前面 26 种选择都正常,就最后 2 种会出现这种现象。

我就奇怪,什么情况会出现这种错误呢?
 
原来我有在 SHOW 这个 FORM2 前对一个数组进行了初始化,
前 26 种情况都没有超过数组的下标,最后 2 种情况就超过了,
估计这超过的部分就被写到 Form2 的 FormState 属性里了,因此出错!

有一句话:世界上没有无缘无故的爱,也没有无缘无故的恨。

看来可以套用到我的问题上:
"世界上没有无缘无故的对,也没有无缘无故的错",

做事真的要细心,当发现问题(特别是一些莫名其妙的错误)时,一定不要怨天尤人,
怀疑系统 BUG 呀什么的。首先要从自己的角度出发。。。。。。。

心情不错,满 5 人散分!
 
谢谢分吧,也恭喜你
 
试着改下原码,if fsCreating in :[fsCreating..fsModal,fsActivated] then ...
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
I
回复
0
查看
693
import
I
顶部