V C L提供一种简单的方法来判断一个控件当前是处在设计期还是在运行期,只要检查在C o m p o -
n e n t S t a t e属性中是否有c s D e s i g n i n g标志。虽然对A c t i v e X控件也能进行类似的判断,但它实现起来不那
么简单,它需要获得容器的I A m b i e n t D i s p a t c h调度接口的指针并检查这个调度接口的U s e r M o d e属性。
可以用下列代码来完成:
fuction iscontrolrunning(control:iunkown):boolean;
var
oleobj:ioleobject;
site :ioleclientsit;
begin
result:=true;
if (control.queryinterface(ioleobject,oleobj)s_ok) and
(oleobj.getclientsit(site)=s_ok) and (site<>nil) then
result :=(site as imbietdispatch).usermode;
end;
<参见delphi 5 指南 876页>