我想定义tquery的一个派生类,使其在execsql前先执行一个showmessage(sql.text);怎么实现呢

解决方案 »

  1.   

    unit Query1;interfaceuses
      Windows, Messages, SysUtils, Classes, DB, DBTables;type
      TQuery1 = class(TQuery)
      private
        Fdebug:boolean;
        { Private declarations }
      protected
        { Protected declarations }
      public
         procedure ExecSql1;
        { Public declarations }
      published
        property debug:boolean read fdebug write fdebug;
        { Published declarations }
      end;procedure Register;implementation
    uses dialogs;
    procedure Tquery1.ExecSql1;
    begin
       if fdebug then
         ShowMessage(text);
       execsql;
    end;procedure Register;
    begin
      RegisterComponents('Data Controls', [TQuery1]);
    end;end.
      

  2.   

    还是这样吧(我用的是adoquery你可以换成query):
    unit ADOQ1;interfaceuses
      Windows, Messages, SysUtils, Classes, DB, ADODB,dialogs;type
      TADOQ1 = class(TADOQuery)
      private
        { Private declarations }
      protected
        { Protected declarations }
      public
        { Public declarations }
      published
       procedure ExecSQL;
        { Published declarations }
      end;procedure Register;implementationprocedure TADOQ1.ExecSQL ;
    begin
      showmessage(self.SQL.Text );
       inherited ExecSQL;
    end;
    procedure Register;
    begin
      RegisterComponents('Samples', [TADOQ1]);
    end;end.
      

  3.   

    还是这样吧(我用的是adoquery你可以换成query):
    unit ADOQ1;interfaceuses
      Windows, Messages, SysUtils, Classes, DB, ADODB,dialogs;type
      TADOQ1 = class(TADOQuery)
      private
        { Private declarations }
      protected
        { Protected declarations }
      public
        { Public declarations }
      published
       procedure ExecSQL;
        { Published declarations }
      end;procedure Register;implementationprocedure TADOQ1.ExecSQL ;
    begin
      showmessage(self.SQL.Text );
       inherited ExecSQL;
    end;
    procedure Register;
    begin
      RegisterComponents('Samples', [TADOQ1]);
    end;end.