Einzelnen Beitrag anzeigen

s-off
(Gast)

n/a Beiträge
 
#40

Re: Basisklasse und davon abgeleitet drei Standardklassen

  Alt 9. Okt 2007, 18:04
Zitat von Apollonius:
Wie kommt denn die TBasisklasse in den FHelper? Du kannst nur mit Interfaces arbeiten, die nicht nil sind. Folglich muss der Konstruktor von TEditklasse und TLabelklasse überschrieben werden.
Ähm - ja - klingt logisch.
Habe nun das Create der Objekte überschrieben und weise darin FHelper eine Instanz der Basisklasse zu - so:
Delphi-Quellcode:
Constructor TLabelklasse.Create(AOwner: TComponent);
Begin
   Inherited;

   FHelper := TBasisklasse.Create(self);
End;
Zitat von Apollonius:
Der Trick ist, dass der internen Cast-Funktion eine GUID übergeben werden muss.
Hui - Sidonius hatte ja in seinem ersten Beispielcode geschrieben, dass eine GUID benötigt würde. Er schrieb aber auch, dass diese automatisch erzeugt wird, was bei mir aber anscheinend nicht der Fall war - ist mir aber ehrlich gesagt auch gar nicht aufgefallen, dass diese fehlte. STRG+UMSCH+G hat geholfen.
Nun kann ich so casten:
(oEdit As ITestInterface).Zoom(SpinEdit1.Value); Nun ja, ich habe wie gesagt, die Create-Methode überschrieben und das casten angepasst.
Ich bekomme nun zumindest schonmal keine Zugriffsverletzung mehr - das gewünschte Zoomen funktioniert aber trotzdem noch nicht - genauer gesagt passiert gar nichts, wenn ich den SpinEdit ändere.
Naja, mal sehen, wo 's hängt.

Danke erstmal, dass ich soweit gekommen bin

Edit: das Zoomen funktioniert nicht, da die Initialwerte im Create der Basisklasse alle als 0 ankommen.
Ich dreh hier nochmal am Reifen....

Edit: Habe mal eine aktualisierte Version hochgeladen

Sorry, aber bei mir hat's schon immer etwas länger gedauert, bis es 'klick' gemacht hat
Angehängte Dateien
Dateityp: zip interface_154.zip (4,0 KB, 6x aufgerufen)
  Mit Zitat antworten Zitat