![]() |
Re: Methoden einer Kompo überschreiben ohne eigene abzuleite
Naja, das stimmt. Das mit dem Hergeben ist so eine Sache, deshalb habe ich mich mal fast entschlossen mein Proggy nicht herzugeben, zumindest einstweilen :mrgreen:
Ich habe zwar in den Sourcen rumgewurschtelt, jetzt aber erkannt, dass das nicht die saubere Lösung ist und deshalb möchte ich die Änderungen in mein eigenes Projekt einbauen. Nun nochmal zur Erklärung des "Problems", am Beispiel irgend eines anderen Objekts, z.B. TMainKompo. Die ganzen Units usw. von TMainKompo haben noch andere Komponenten dabei, z.B. TSubKompo1 und TSubKompo2. TMainKompo.Prop1 ist vom Typ TSubKompo1, TMainKompo.Prop2 vom Typ TSubKompo2. Ich lade also diesen ganzen Source irgendwo runter und möchte jetzt zu TMainKompo noch eine Eigenschaft Prop3 hinzufügen, zu TSubKompo1 noch Prop11 und zu TSubKompo2 noch Prop21. Jetzt würde ich gerne kurz schreiben, z.B.:
Delphi-Quellcode:
Nur geht es eben nicht ganz so. Wenn ich meine eigenen Kompos ableite müsste ich nun noch etwas hinzufügen:
type
TKompo = class(TKompo) property Prop3: Integer; end; TSubKompo1 = class(TSubKompo1) property Prop11: Integer; end; TSubKompo2 = class(TSubKompo2) property Prop21: Integer; end;
Code:
In diesem Fall wären es nur 2 Zeilen, in anderen Fällen könnten es aber auch mehr sein...
type
TMyKompo = class(TKompo) [color=#ff0000] property Prop1: TMySubKompo1; property Prop2: TMySubKompo2;[/color] property Prop3: Integer; end; TMySubKompo1 = class(TSubKompo1) property Prop11: Integer; end; TMySubKompo2 = class(TSubKompo2) property Prop21: Integer; end; Zum Schluss noch zur Verdeutlichung, den Code den ich mir irgenwo runtergeladen habe:
Delphi-Quellcode:
Klarer Weise sind das alles nur Beispiele, die Sinnhaftigkeit der Kompos ist also anzuzweifeln :mrgreen:
type
TKompo = class(TObject) property Prop1: TMySubKompo1; property Prop2: TMySubKompo2; property Haha1: String; end; TSubKompo1 = class(TObject) property Haha11: String; end; TSubKompo2 = class(TObject) property Haha21: String; end; Ich hoffe, jetzt habe ich mich verständlich ausgedrückt, sonst bitte nochmal rückfragen!! LG & gute Nacht dann... , ich Edit: Achja, @tommie-lie: deinen Beitrag habe ich nicht übersehen, ich schau mir dann den Link morgen oder so an! Edit2: Tippfehler ausgebessert |
Re: Methoden einer Kompo überschreiben ohne eigene abzuleite
Zitat:
Allerdings ist jede Anwendung ein von SynEdit abgeleitetes Werk. Meine Spezialität ist die GPL, für die LGPL und die MPL, die von SynEdit laut Projektseite verwendet werden, müsste ich nachschauen, und dafür bin ich jetzt zu faul ;-) Wäre es GPL, müsste jede Anwendung, die SynEdit benutzt, ebenfalls unter GPL sein. |
Re: Methoden einer Kompo überschreiben ohne eigene abzuleite
So, das mit den Class Helpers: Sagen wir so, es funktoiniert halb.
Delphi-Quellcode:
Das funktioniert ohne Probleme und ich kann auch in TTest auf SomeInt zugreifen (und in SomeInt auf SomeStr).
TTest = class
public SomeStr: String; end; TTestHelper = class helper for TTest public procedure SomeInt; end; Was aber nicht funktioniert, ist eine Variable zu definieren:
Delphi-Quellcode:
Da sagt das Delphi dann »Felddefinition nicht erlaubt nach Methoden oder Eigenschaften«
TTest = class
public SomeStr: String; end; TTestHelper = class helper for TTest public test: String; procedure SomeInt; end; Wenn ich Properties definieren will, dann kommen auch Probleme:
Also irgendwie funktionierts eben nicht ganz :gruebel: LG |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:56 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz