我动态生成的控件,在运行时报错‘invalid class typecast’(200分)

  • 主题发起人 主题发起人 chen66
  • 开始时间 开始时间
chen66:
Sorry! 我刚刚急着赶去吃饭,……
*_*!

首先‘invalid class typecast’是表示在作强制类型转换的过程中,
常会发生的问题,那么,再看下面的代码,就很容易知道:Label 和 DBMemo
控件的 OnMouseUp 事件都是由 MyMouseUp 进行处理的,在处理 Label 的
时候,
acomp[(sender as tdbmemo).tag].width:=acomp[(sender as tdbmemo).tag].Width +x;
会出错,因为 Sender 是 TLabel 类型的,强制转换成 TDBMemo 是不行的,
处理 TDBMemo 时也一样!

在同时修改公共属性时,可以用上面的方法,他们都是 TControl 派生出来的,
而且 TControl 同时具有 Tag 、Width 和 Height 属性。
在修改非公共属性时,可以通过如下方法加以区别对待:
if Sender is TLabel then
(Sender as TLabel).Caption := 'Hello!'
else if Sender is TDBMemo then
(Sender as TDBMemo).Lines.Add('Hello!');

另外,你给的分太多了!!!

>授人以鱼不如授人以渔
再次向你道歉,并感谢你的告戒!!!
 
后退
顶部