ADOComponents

Kir86Kir86 Нижневартовск
отредактировано 17:20 Раздел: FastReport 3.0
Прикрутили TADOStoredProc как описано в мануале. Компильнули. Только не понятно что нужно сделать что бы StoredProc можно было выбрать в дизайнере.
Будут ли версии FR где ADOStoredProc будет прикручино автором? Если да то когда? ;)

Комментарии

  • отредактировано 17:20
    Надо регистрировать компонент, чтобы он стал доступен в дизайнере. Как - описано в developer manual.
  • Kir86Kir86 Нижневартовск
    отредактировано 17:20
    Мануал читал делал все как там написано. Но толку ни какова. В RTTI все прописано.
    Удалил стандартный поставил свой толку нет.
    Хотя может проблема в том что я взял за основу пакеты из ..\FR3\Source\ADO и там дописал свой TfrxADOStoredProc. Может это все барахло вынести в отделные модули или это не пренципиально? Так же не понятно где написать "Хранимая процедура ADO" для дизайнера.
  • Kir86Kir86 Нижневартовск
    отредактировано 17:20
    Побидил я его. Теперь в дизайнере все доступно и вроде бы как должно работать. Только один нюанс в Object Inspectore нет свойств которыя я там хотел видеть но я думаю это мой недочет. ;)
  • Kir86Kir86 Нижневартовск
    отредактировано 17:20
    Все бы ни чего, но вот что то в Object Inspectore ни фига не появляются необходимые свойства. Все прописал как мануале.
      TfrxStoredProcNameProperty = class(TfrxStringProperty)
      public
        function GetAttributes: TfrxPropertyAttributes; override;
        procedure GetValues; override;
      end;
    
      TfrxStoredProcCommandTimeProperty = class(TfrxIntegerProperty)
      public
        function GetValue: String; override;
        procedure SetValue(const Value: String); override;
      end;
    
    .....
    
    { TfrxStoredProcNameProperty }
    
    function TfrxStoredProcNameProperty.GetAttributes: TfrxPropertyAttributes;
    begin
      Result := [paSortList];
    end;
    
    procedure TfrxStoredProcNameProperty.GetValues;
    begin
      inherited;
      with TfrxADOStoredProc(Component).StoredProc do
        if Connection <> nil then
          Connection.GetProcedureNames(Values);
    end;
    
    { TfrxStoredProcCommandTimeProperty }
    
    function TfrxStoredProcCommandTimeProperty.GetValue: String;
    begin
    	Result := IntToStr(TfrxADOStoredProc(Component).StoredProc.CommandTimeout);
    end;
    
    procedure TfrxStoredProcCommandTimeProperty.SetValue(const Value: String);
    begin
      inherited;
      TfrxADOStoredProc(Component).StoredProc.CommandTimeout := StrToInt(Value);
    end;
    
    .....
    
    initialization
    .....
      frxPropertyEditors.Register(TypeInfo(String), TfrxADOStoredProc, 'ProcedureName',
        TfrxStoredProcNameProperty);
      frxPropertyEditors.Register(TypeInfo(String), TfrxADOStoredProc, 'CommandTime',
        TfrxStoredProcCommandTimeProperty);
    

    где что не так подскажите. Компилится без ошибок.
  • Kir86Kir86 Нижневартовск
    отредактировано 17:20
    Я так понимаю ни кто не прикручивал свои компоненты к FR?
  • отредактировано 17:20
    А что именно не появляется? Не видно св-в или не работают их редакторы?
  • Kir86Kir86 Нижневартовск
    отредактировано 17:20
    Не видно свойства.
    А работоспособность редкторов пока проверить не могу.
  • отредактировано 17:20
    Покажите, как объявлены св-ва в самом классе TfrxADOStoredProc
  • Kir86Kir86 Нижневартовск
    отредактировано 17:20
      TfrxADOStoredProc = class(TfrxCustomDataset)
      private
        FDatabase: TfrxADODatabase;
        FStoredProc: TADOStoredProc;
        procedure SetDatabase(Value: TfrxADODatabase);
        function GetCommandTime: integer;
        function GetProcedureName: string;
        procedure SetCommandTime(const Value: integer);
        procedure SetProcedureName(const Value: string);
      protected
        procedure Notification(AComponent: TComponent; Operation: TOperation); override;
        procedure OnChangeProcedureName(Sender: TObject);
      public
        class function GetDescription: String; override;
        constructor Create(AOwner: TComponent); override;
        procedure BeforeStartReport; override;
        property CommandTime: integer read GetCommandTime write SetCommandTime default 0;
        property ProcedureName: string read GetProcedureName write SetProcedureName;
        property StoredProc: TADOStoredProc read FStoredProc;
      published
        property Database: TfrxADODatabase read FDatabase write SetDatabase;
      end;
    
  • отредактировано 17:20
    Св-во Database должно быть видно, а остальные - нет (надо их перенести в published).
  • Kir86Kir86 Нижневартовск
    отредактировано 17:20
    Сенкс

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.