Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > DevExpress TdxNavBar наследование


Автор: zve4202 24.4.2017, 14:35
Уважаемые форумчане! 
Я столкнулся с неожиданной проблемой при наследовании от TdxNavBar.
Код

uses
    System.SysUtils, System.Classes, Vcl.Controls, Vcl.Forms, Vcl.ImgList, Vcl.ActnList, System.IniFiles, Vcl.Menus,
    // ---------------
    cxControls, dxNavBarConsts, dxNavBar, dxNavBarCollns, dxNavBarOffice12Views, dxNavBarSkinBasedViews,
    // ----------

const
    isNavBarView = dxNavBarAccordionView + 1;

type
    TisLinkViewInfo = class(TdxNavBarLinkViewInfo)
    end;

    TisViewInfo = class(TdxNavBarSkinBasedExplorerBarViewInfo)
    end;

    TisOutlookBarPainter = class(TdxNavBarOffice12ExplorerBarPainter)
    protected
        class function GetViewInfoClass: TdxNavBarViewInfoClass; override;
        class function GetLinkViewInfoClass: TdxNavBarLinkViewInfoClass; override;
    end;

    TisOutlookBar = class(TdxNavBar)
    protected
        procedure Loaded; override;
    end;

implementation

uses
    dxNavBarViewsFact, dxNavBarGroupItems;

{ TisOutlookBar }


procedure TisOutlookBar.Loaded;
begin
    if not(csDesigning in ComponentState) then
    begin
        ViewReal := isNavBarView;
    end;
    inherited Loaded;
end;

procedure RegisterView(AID: Integer; AName: string; APainterClass: TdxNavBarPainterClass);
begin
    if dxNavBarViewsFactory <> nil then
        dxNavBarViewsFactory.RegisterView(AID, AName, APainterClass);
end;

procedure UnRegisterView(AID: Integer);
begin
    if dxNavBarViewsFactory <> nil then
        dxNavBarViewsFactory.UnRegisterView(AID);
end;

{ TisOutlookBarPainter }

class function TisOutlookBarPainter.GetLinkViewInfoClass: TdxNavBarLinkViewInfoClass;
begin
    Result := TisLinkViewInfo;
end;

class function TisOutlookBarPainter.GetViewInfoClass: TdxNavBarViewInfoClass;
begin
    Result := TisViewInfo;
end;

initialization

RegisterView(isNavBarView, 'My OutlookBar Painter', TisOutlookBarPainter);

finalization

UnRegisterView(isNavBarView);

end.


то есть, я регистрирую свой TisOutlookBarPainter, и подключаю его по завершению загрузки TisOutlookBar.
тут всё нормально, TisOutlookBarPainter создаётся, однако метод  GetLinkViewInfoClass никогда не срабатывает, хотя метод GetViewInfoClass отрабатывает.

Отзовитесь, кто-нибудь знает в чём проблема?!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)