(32)面向对象程序设计的基本问题:componentcount和is(50分)

  • 主题发起人 主题发起人 千中元
  • 开始时间 开始时间

千中元

Unregistered / Unconfirmed
GUEST, unregistred user!
程序:
for i:=0 to componentcount-1 do
if components is TEdit then
Tedit(components).Text:='';
问题1:componetcount是容器的属性,如果默认的容器是form,对么?
如果容器是controlbar,它的componetcount属性该怎么表达?
问题2:“在这里用到了强制转化,判断出组件的类型是TEdit后,强制将构件
转化成为Tedit,然后进行Text属性的赋值操作”。
-------判断出是TEdit,还要转化成Tedit????不明白说什么。
 
1.对/
2.如果不转换成TEdit,怎么使用其Text属性呢
 
1.对。
for i:=0 to controlbar1.componentcount-1 do……
2. if 是你自己要判断组件类型,然后 Tedit(components).Text 强制转化


 
cheka比我快53秒
 
不判断出就转化有点太粗暴吧,当然要判断是(即能转化)才转化
 
Components[Index: Integer]: TComponent
Components的元素是TComponent类型
所以要转换
 
agree wrench.
用is是动态的判断,不等于已经将其转化.所以还要强制转化。

componentcount 用在其他地方一样吧,用作容器的property来调用。//not sure.
 
Tedit(components)
倒也没转化什么,编译出来最终的代码没加进一点东西,
只是告诉编译器我这个指针就是指向
TEdit的,仅仅是为了编译通过而已
 
不对吧, 不用这个你不能访问 Edit 特有的东西。

1, 没看懂。什么叫该怎么表达?
 
转换!安全第一!
 
components as TEdit 才叫转换,才更安全

Tedit(components)只是告诉编译器:components就是 TEdit 指针,究竟是不是你别管,运行了就知道
 
好象PiPi.说的对,我想是这样的.但我还是常常用TEdit()
 
就不分了:)
 

Similar threads

S
回复
0
查看
896
SUNSTONE的Delphi笔记
S
S
回复
0
查看
873
SUNSTONE的Delphi笔记
S
后退
顶部