What you show is not cyclical inheritance. It happens that dxSample.TMycxGridDBTableViewinherits from TcxGridDBTableViewin another module, perhaps cxGridDBTableView.TcxGridDBTableView. And dxSample.TcxGridDBtableViewinherited from dxSample.TMycxGridDBTableView.
Your code is equivalent to:
type
TcxGridTableControllerAccess = class(TcxGridTableController);
{ Note: this does NOT inherit from the TcxGridDBTableView defined }
{ a little further on in the source. It inherits from the original }
{ DevEx TcxGridDBTableView. }
TMycxGridDBTableView = class(cxGridDBTableView.TcxGridDBTableView)
protected
function GetViewDataClass: TcxCustomGridViewDataClass; override;
end;
TMycxGridViewData = class(TcxGridViewData)
protected
function GetFilterRowClass: TcxGridFilterRowClass; override;
end;
TMycxGridFilterRow = class(TcxGridFilterRow)
protected
procedure SetValue(Index: Integer; const Value: Variant); override;
end;
TcxGridDBTableView = class(TMycxGridDBTableView);
So hierarchy:
cxGridDBTableView.TcxGridDBTableView
|
v
dxSample.TMycxGridDBTableView
|
v
dxSample.TcxGridDBTableView
, dxSample.TMycxGrdiDBTableView dxSample.TcxGridDBtableView, cxGridDBTableView.TcxGridDBTableView, . , , .
, - dxSample cxridDBTableView uses, DevEx dxSample.TcxGridDBtableView. interposing.
VCL FireMonkey, , -,
type
TVCLClass = class(OriginalVCLUnit.TVCLClass)
end;
type
TMyVCLClass = class(OriginalVCLUnit.TVCLClass)
//
end;
TVCLClass = class(TMyVCLCLass);
, , .