Gibt es eine Möglichkeit als BasisForm ein Template zu verwenden?



  • Ich habe den Fall, das ich einige Masken stark vereinfachen würde, in dem ich diesen eine Templatebasismaske (die wiederum von TForm abgeleitet ist) verpasse. Meine Versuche scheitern aber spätestens beim "Error creating form: Ancestor for 'xxx' not found" (Wobei xxx für ein typedef auf die Templatebasisklasse steht).

    Gibt es einen Weg, VCL-Formulare mit C++ Templates zu kombinieren, und wenn was muss man tun?



  • asc schrieb:

    Gibt es einen Weg, VCL-Formulare mit C++ Templates zu kombinieren

    Nicht daß ich wüßte; ich denke, du mußt dir einen anderen Weg suchen.

    Könntest du mal ein Beispiel für eine sinnvolle Anwendung geben?



  • audacia schrieb:

    Könntest du mal ein Beispiel für eine sinnvolle Anwendung geben?

    Wir haben einige Masken die zur Bearbeitung einfacher Daten dienen. Grundsätzlich haben alle davon die gleichen Funktionalitäten, nur die Maskenfelder und der zugrunde liegende Datensatz ist anders. Und die Datensätze werden über Klassen gelesen/geschrieben, die bis auf den Datentyp identische Schnittstellen anbieten.

    Bislang wird hier eine Vererbung verwendet, wo in jeder Klasse die Behandlung hinein geschrieben wird. Mit einem Template könnte man hierbei mindestens 50% des Codes einsparen.



  • asc schrieb:

    Wir haben einige Masken die zur Bearbeitung einfacher Daten dienen. Grundsätzlich haben alle davon die gleichen Funktionalitäten, nur die Maskenfelder und der zugrunde liegende Datensatz ist anders.

    Benutzt du Visual Form Inheritance? Klingt nach einem guten Anwendungsfall dafür.

    http://www.webtechcorp.co.uk/web-developer-training-delphi-article-vfi-1.htm



  • audacia schrieb:

    Benutzt du Visual Form Inheritance? Klingt nach einem guten Anwendungsfall dafür.

    Ja, aber ich erkaufe mir aber ungern eine generische Schnittstelle durch viele casts an einer anderen Stelle.

    Ja, ich könnte komplett auf Vererbungshierachien umstellen, und damit ohne Templates an der allgemeinen Behandlung auskommen, benötige dann aber casts an den speziellen Behandlungen.



  • Idealerweise ist es nur ein Downcast.


Anmelden zum Antworten