用 is 判断!用As转换。
 if Activecontrol is Tbutton then
  (ActiveControl as tbutton).Click;

解决方案 »

  1.   

    不知道具体怎样实现
    在《delphi开发人员指南》里好象有……
      

  2.   

    2 Kingron(WinAPI) :
    他要的是直接判断属性和方法是否存在
    你的方法好象不行
      

  3.   

    的确。
    我不知道这个窗体有那些东西
    如果知道,可以用kingron的方法解决
    总不能穷举吧
    有没有可以查找属性的函数或方法呢?
    如果rh你知道,贴上来看看吧
      

  4.   

    完全可以,但是较为复杂:
    需要用到运行期类型信息(Runtime Type Information)简称RTTI,
    在单元TypInfo.pas中定义了RTTI信息的结构,仔细看看吧!不过只
    可以看Published特性。
      

  5.   

    举个例子:
    unit Unit1;
    interface
    uses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls,typInfo;
    type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
      function HasPro(AComp:TComponent;Apro:string):boolean;
    var
      Form1: TForm1;
    implementation
    {$R *.DFM}
    function HasPro(AComp:TComponent;Apro:string):boolean;
    Var propInfo:PPropInfo;
    begin
         PropInfo:=GetPropInfo(AComp.ClassInfo,APro);
         Result:=PropInfo<>nil;
    end;
    procedure TForm1.Button1Click(Sender: TObject);
    begin
         if HasPro(button1,'caption') then
            showmessage('有此属性!')
         else
             showmessage('没有此属性!')
    end;
    end.
      

  6.   

    有一个TypeInfo()函数,不知道怎么用。
      

  7.   

    GetProperties
    GetAttributes。
    我也不知道怎么用,只知道帮助上有这两个函数。
      

  8.   

    只能判断有无何种类型的方法:
    begin
         if TypeInfo(TMouseEvent)=nil then 
            caption:='无该类型方法'
         else 
             caption:='有该类型方法';
    end;to willmac:你是在什么情况下需要这种用法的?
      

  9.   

    我正在做一个组件似的控制系统模型
    由于每一个组件都由用户自行设计
    组件的属性方法完全由用户生成
    有我们自行设计的组件模型部分
    没有任何问题,包括参数设置
    运行设置都可以通过,唯独子定义组件部分
    由于有无未知,属性未知,方法未知,
    我唯一可以得到的只是焦点组件的句柄,或入口地址
    听说,韩国人用delphi搞过一套可视化的delphi ide,我的设计
    模式和它比较像,不知道谁有它的例程,或相应的解决方案。
    我的要求不多,只要解决这点就可以了。
    其它部分就我自己搞定了。
    这里先谢谢大家了
      

  10.   

    方法部分已经解决了,
    我在组件山定义了一个消息接口
    通过对该组件进行消息传递达到
    组件,进行方法的调度
    如:sendmessage(activecontrol.hwnd,方法名,参数1,参数2)
    如果有更简单的方法
    欢迎讨论!
      

  11.   

    to willmac:
    可参考以下产品:
      www.infolight.com.cn --> Visual DBTools这个问题还是用IS解决起来比较方便,因为在VCL库中,一些相同的功能都已经基本上被提到一个共同的基类中去了,所以,要尽量利用这些共同的东西,否则,程序员又成了写代码的机器了
      

  12.   

    ?关于NT的NetBIOS错误『高手请入』(Danphel) 2-24 11:47 数据库开发类
    有谁能帮我解答?分数可以再加!!!