Der Beispielcode (der jetzt gelöscht wurde) tut nicht das, was er zu tun scheint. Sie sehen TMycxGridDBTableView
wird als ein Nachkomme von TcxGridDBTableView
definiert, und dann sehen Sie TcxGridDBTableView
, definiert als ein Nachkomme von TcxGridDBTableView
.
Allerdings ist die TcxGridDBTableView
Sie oben sehen nicht gleich TcxGridDBTableView
, die Sie später sehen. Die erste bezieht sich auf eine Klasse, die an anderer Stelle in einer anderen Einheit deklariert wurde. Das nächste Vorkommen ist die Deklaration einer neuen Klasse in diese Einheit, die zufällig denselben Basisnamen wie die Klasse der anderen Einheit hat.
Diese Technik ist bekannt als Interposer-Klasse. Es wird verwendet, um eine neue GetViewDataClass
Methode einzuführen, aber immer noch mit dem gleichen Klassennamen. Das Formular, das Steuerelemente mit diesem Namen verwendet, verwendet die neue Version der Klasse anstelle der ursprünglichen Version. Es ist eine Möglichkeit, ein VCL-Steuerelement anzupassen, ohne ein benutzerdefiniertes Paket kompilieren und installieren zu müssen.
Schön, nach -2 Stimmen dachte ich, dass ich nie eine Antwort bekommen würde, ich schätze, du kannst keinen Fehler machen, selbst wenn du nicht sicher bist, wovon du redest. Warum wurde der Beispielcode gelöscht? Copyright oder etwas? –
Ich löschte es, weil es die Frage änderte. Sie sollten den Rat in meinen Kommentaren beherzigen und eine neue Frage stellen. –
@ David: Aber es war ein Beispiel für das, was er beschrieben, d. H. TSon von TFather und TFather von TSon erben. Dass der erste TFather in einer anderen Einheit war, war nicht sofort offensichtlich. –