用activeX Form开发的控件,添加了自定义属性SQL
function Get_SQL: WideString; safecall;
procedure Set_SQL(const Value: WideString); safecall;
在设计时给属性赋值,但是在运行时读取SQL为空
有谁知道是怎么回事?应该怎样解决?

解决方案 »

  1.   

    问题已解决
    private
      mSQL:string;
    protected
      function Get_SQL: WideString; safecall;
      procedure Set_SQL(const Value: WideString); safecall;
    public
      procedure DefineProperties(Filer: TFiler); override;
      procedure LoadSQLProperty(Reader: TReader);
      procedure StoreSQLProperty(Writer: TWriter);
    具体实现如下:
    function TxkChartTool.Get_SQL: WideString;
    begin
        Result := mSQL;
    end;
    procedure TxkChartTool.Set_SQL(const Value: WideString);
    begin
        mSQL := Value;
    end;
    procedure TxkChartTool.DefineProperties(Filer: TFiler);
    begin
        inherited;
        //添加设置和读取属性
        Filer.DefineProperty('xkSQL', LoadSQLProperty, StoreSQLProperty, true);    
    end;
    procedure TxkChartTool.LoadSQLProperty(Reader: TReader);
    begin
        mSQL := Reader.ReadString;
    end;
    procedure TxkChartTool.StoreSQLProperty(Writer: TWriter);
    begin
        Writer.WriteString(mSQL);
    end;