P
PeterC
Unregistered / Unconfirmed
GUEST, unregistred user!
本人通过DELPHI开发一个动态接链库,可以存在问题,希望各位侠能帮一帮。
条件:
窗体名 Form1
窗体控件名 Edit1:TEdit,Edit2:TEdit
//主要功能是控制窗体中TEdit类的ReadOnly读写状态。
第一个函数
Function Fun_ComponentStat(pFormName:TForm;pStatus:Boolean=False):Integer;stdCall;
Var
I:Integer;
Begin
For I:=0 To pFormName.ComponentCount-1 Do
Begin
If pFormName.Components Is TEdit Then
TEdit(pFormName.Components).ReadOnly:=Not pStatus;
End;
End;
在实际使用中,pFormName.Components 得出来的值非 TEdit类,也就是说永远没有办法运行TEdit(pFormName.Components).ReadOnly:=Not pStatus; 条语句
可以我如果将If pFormName.Components Is TEdit Then 语句屏蔽,那该函数就可以得到预期的效果,
如果这个函数写在窗体中,可单元中,不写在动态链接库,就不会出现前面提出的问题。
//该函数不会存在问题。
//第二个函数
Function Fun_ComponentStat(pFormName:TForm;pStatus:Boolean=False):Integer;
Var
I:Integer;
Begin
For I:=0 To pFormName.ComponentCount-1 Do
Begin
If pFormName.Components Is TEdit Then
TEdit(pFormName.Components).ReadOnly:=Not pStatus;
End;
End;
第一个函数与第二个函数,他们的代码是没有区别的,但他们存放的位置不一位,第一个是存放在动态链接库,第二个是存在单元中。
请问 pFormName.Components Is TEdit 这条语句存在什么问题?
条件:
窗体名 Form1
窗体控件名 Edit1:TEdit,Edit2:TEdit
//主要功能是控制窗体中TEdit类的ReadOnly读写状态。
第一个函数
Function Fun_ComponentStat(pFormName:TForm;pStatus:Boolean=False):Integer;stdCall;
Var
I:Integer;
Begin
For I:=0 To pFormName.ComponentCount-1 Do
Begin
If pFormName.Components Is TEdit Then
TEdit(pFormName.Components).ReadOnly:=Not pStatus;
End;
End;
在实际使用中,pFormName.Components 得出来的值非 TEdit类,也就是说永远没有办法运行TEdit(pFormName.Components).ReadOnly:=Not pStatus; 条语句
可以我如果将If pFormName.Components Is TEdit Then 语句屏蔽,那该函数就可以得到预期的效果,
如果这个函数写在窗体中,可单元中,不写在动态链接库,就不会出现前面提出的问题。
//该函数不会存在问题。
//第二个函数
Function Fun_ComponentStat(pFormName:TForm;pStatus:Boolean=False):Integer;
Var
I:Integer;
Begin
For I:=0 To pFormName.ComponentCount-1 Do
Begin
If pFormName.Components Is TEdit Then
TEdit(pFormName.Components).ReadOnly:=Not pStatus;
End;
End;
第一个函数与第二个函数,他们的代码是没有区别的,但他们存放的位置不一位,第一个是存放在动态链接库,第二个是存在单元中。
请问 pFormName.Components Is TEdit 这条语句存在什么问题?