类似以下这些格式的语句 是什么意思? (50分)

T

tcq

Unregistered / Unconfirmed
GUEST, unregistred user!
类似以下这些格式的语句 是什么意思?
(Components[iCount] is TCheckBox)
……is……
if (Components[iCount] is TCheckBox) then
(Components[iCount] as TCheckBox)
……as……
if (Components[iCount] as TCheckBox).Tag =111 then
……as……
……is……
我找不到这些说明资料,哪位能告之?谢谢

 
IS用来判断控件类型
AS用来引用控件属性
 
首先判断Components[iCount]是否tcheckbhox,如是的话就把它引用成tcheckbox使用
 
这不难啊!
举个例子说,你在一个FORM上放了二个CHECKBOX控件,一个EDIT控件。
每个FORM都有一个COMPONENTCOUNT属性,它代表FORM上的控件数目,在我所举的这个例子里,
假设你在一个FORM上放了二个CHECKBOX控件,一个EDIT控件,所以现在FORM上有三个控件,
COMPONENTCOUNT的值为3。
每个FORM又都有一个COMPONENTS属性,它代表FORM上的控件。
请看下面的一段代码:
for icount:=0 to form1.ComponentCount-1 do
begin
if form1.Components[icount] is tcheckbox then
tcheckbox(form1.Components[icount]).checked:=true;
end;
这段代码的意思是循环扫描FORM上的控件,本例中你在一个
FORM上放了二个CHECKBOX控件,一个EDIT控件,所以COMPONENTS[0],
COMPONENTS[1],COMPONENTS[2]分别代表这三个控件。但到底是COMPONENTS[0]是
CHECKBOX呢还是COMPONENTS[1]是CHECKBOX呢,我们不得而知,所以我们用
if form1.Components[icount] is tcheckbox then来判断。
这段代码的意思是如果“COMPONENTS[ICOUNT]是CHECKBOX的话,那么”,下面再用
tcheckbox(form1.Components[icount]).checked:=true;把每个CHECKBOX的CHECKED属性
设置为TRUE。
你明白了吗?
 
Is 是用來判斷實例是否為指定的類別
Components[iCount] is TCheckBox -> 如果Components[iCount]是的類別是TCheckBox
或是TCheckBox的子類, 則會傳回True
as 是傳換實例的類, 有點類似型態轉型,
Components[iCount] as TCheckBox, 意指將Components[iCount]類型轉換為TCheckBox
因為Components本身宣告的類型為TComponent, 但它存放的TComponent的子類實例,
如果直接使用Components[iCount]則編釋只能認得TComponent所擁有的屬性; 即使存放
放的實例為TCheckBox, 也無法使用TCheckBox所擁有的屬性;
所以以下語法:
//判斷Components[iCount]是否為TCheckBox類型
if (Components[iCount] is TCheckBox) then
//將Components[iCount]轉換為TCheckBox類型, 並讀取TCheckBox才擁有的屬性Checked
if (Components[iCount] as TCheckBox).Checked then
ShowMessage('CheckBox is Checked);



 
太谢谢了,我是刚学,也是刚上网,网络真是即“神奇”又“热情”啊
 

Similar threads

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