ActiveX控件如何判断是在运行期还是设计期(200分)

  • 主题发起人 主题发起人 DeityFox
  • 开始时间 开始时间
D

DeityFox

Unregistered / Unconfirmed
GUEST, unregistred user!
什么意思?
 
判断IDE环境是否存在
 
开发vcl组件只要检查ComponentState属性中是否有csDeisigning标志来判断vcl组件是在
设计期,那开发ActiveX控件时是如何来判断呢
 
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页>

 
后退
顶部