AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Methoden einer Kompo überschreiben ohne eigene abzuleiten
Thema durchsuchen
Ansicht
Themen-Optionen

Methoden einer Kompo überschreiben ohne eigene abzuleiten

Ein Thema von Delphi-Freak · begonnen am 28. Aug 2005 · letzter Beitrag vom 29. Aug 2005
Antwort Antwort
Seite 1 von 3  1 23      
Benutzerbild von Delphi-Freak
Delphi-Freak

Registriert seit: 26. Sep 2004
Ort: Wien Nähe (Österreich)
321 Beiträge
 
Delphi 2006 Architect
 
#1

Methoden einer Kompo überschreiben ohne eigene abzuleiten

  Alt 28. Aug 2005, 11:13
Hi!

Hab mal wieder eine Frage. Wie kann ich die Methoden, Eigenschaften etc. eines Objekt überschreiben ohne dabei ein eigenes Objekt ableiten zu müssen.
Konkret habe ich mir SynEdit etwas abgeändert. Jetzt gibt es nur ein Problem, wenn eine neue Version herauskommt, oder so. Deshalb wäre es besser, diese Änderungen nicht direkt zu machen. Warum ich keine eigene Kompo ableiten will, liegt darin, dass es bei SynEdit ja nicht nur eine Kompo gibt (TSynEdit) sondern auch viele andere (wie z.B. TSynEditStringList). So müsste ich also die SynEdit Kompo ableiten und in der alle Unterobjekte überschreiben, die ich geändert habe, auf den neuen Namen.
Gibt es da also irgeneine Möglichkeit - würde mir einige Arbeit ersparen

LG, Gerhard
Gerhard Pfister
*
»To him who loves us and has freed us from our sins by his blood [...] be glory and power for ever and ever! Amen.« (Revelation*1,*5?6)
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Methoden einer Kompo überschreiben ohne eigene abzuleite

  Alt 28. Aug 2005, 11:29
du könntest das original TSynEdit umbenennen (TBaseSynEdit) die unit auch umbennen und dann deine abgleitete Klasse "TSynEdit" nennen und die Unit davon so nennen wie die des originalen SynEdits hieß. Somit leiten dann alle von deinem SynEdit ab.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Delphi-Freak
Delphi-Freak

Registriert seit: 26. Sep 2004
Ort: Wien Nähe (Österreich)
321 Beiträge
 
Delphi 2006 Architect
 
#3

Re: Methoden einer Kompo überschreiben ohne eigene abzuleite

  Alt 28. Aug 2005, 11:59
Danke mal, jedoch heißt das, dass ich bei jeder neuen Version die ganzen Komponenten-Namen abändern müsste, und es dann immer noch nur für dieses eine Projekt verwendbar wäre; und alle Kompos die ich nicht abändere müsste ich den Namen bei "Verweisen" auch abändern. Irgenwie ist es da glaube ich noch einfacher, meine Kompo TMySynEdit oder so zu nennen und dann die "Nebenkompos" TMySynEditStringList usw. und in TMySynEdit auch auf diese referenzieren.
Es geht mir also nicht um den Namen, den ich im Form verwende, sondern darum, die SynEdit-Pas-Dateien nicht abzuändern und trotzdem möglichst wenig Code mir meinen Änderungen zu haben, was bei einem Ableiten nicht unbedingt der Fall wäre.

LG

Edit: Da kommt mir jetzt eine andere Idee. Wenn ich die geänderten Dateien in das Verzeichnis meines Projekts gebe, verwendet er dann diese Dateien oder die originalen die irgenwo unter C:\Programme\Borland\Delphi2005\... liegen?

Edit2: Alles muss gelernt sein - auch BBCode
Gerhard Pfister
*
»To him who loves us and has freed us from our sins by his blood [...] be glory and power for ever and ever! Amen.« (Revelation*1,*5?6)
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Methoden einer Kompo überschreiben ohne eigene abzuleite

  Alt 28. Aug 2005, 12:31
bevorzugt werden die dateien die dem Projekt hinzugefügt sind.

Warum musst du dann immer mehrere Dateien umbennen, du musst doch nur die eine datei (dort wo TSynEdit drin ist) umbenennen.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#5

Re: Methoden einer Kompo überschreiben ohne eigene abzuleite

  Alt 28. Aug 2005, 12:35
Warum streubst du sich so davor, eine eigene Ableitung zu nehmen?
Kann ich wirklich nicht nachvollziehen...
So hättest du auch eine gewisse Abstraktion, die dich vor Änderungen im Interface von Synedit - Klassen schützt...
  Mit Zitat antworten Zitat
Benutzerbild von Delphi-Freak
Delphi-Freak

Registriert seit: 26. Sep 2004
Ort: Wien Nähe (Österreich)
321 Beiträge
 
Delphi 2006 Architect
 
#6

Re: Methoden einer Kompo überschreiben ohne eigene abzuleite

  Alt 28. Aug 2005, 14:23
Zitat von SirThornberry:
bevorzugt werden die dateien die dem Projekt hinzugefügt sind.
Was heißt "dem Projekt hinzugefügt", meinst du den Ordner angegeben (irgendwo in den Optionen oder so)?

Zitat von SirThornberry:
Warum musst du dann immer mehrere Dateien umbennen, du musst doch nur die eine datei (dort wo TSynEdit drin ist) umbenennen.
Weil ich auch Änderungen in z.B. TSynEditStringList machen möchte...


Zitat von Robert_G:
Warum streubst du sich so davor, eine eigene Ableitung zu nehmen?
Kann ich wirklich nicht nachvollziehen...
So hättest du auch eine gewisse Abstraktion, die dich vor Änderungen im Interface von Synedit - Klassen schützt...
Naja, ich möchte es in folgendem Beispiel demonstrieren:
Nehmen wir an TSynEdit.Lines wäre vom Typ TSynEditStringList (auch wenn es nicht ganz so ist).
Nun möchte ich in TSynEditStringList eine weitere Funktion haben.
Kann ich nun die Kompos direkt "überschreiben", so füge ich TSynEditStringList die eine Funktion hinzu und bin fertig. Beim Ableiten muss ich eine Klasse TMySynEdit definieren, in der ich die Property Lines auf TMySynEditStringList überschreibe und zusätzlich brauche ich noch die Klasse TMySynEditStringList, die ich dann um die eine Funktion erweitere. Eigentlich müsste ich dann noch alle anderen Kompos überschreiben, die irgendwie die Klasse TSynEditStringList (bzw. TSynEdit) verwenden um ihnen zu sagen, dass sie TMySynEditStringList verwenden sollen.
Das war eigentlich der Grund - hoffe ich habe mich klar ausgedrückt.


LG, Delphi-Freak
Gerhard Pfister
*
»To him who loves us and has freed us from our sins by his blood [...] be glory and power for ever and ever! Amen.« (Revelation*1,*5?6)
  Mit Zitat antworten Zitat
Benutzerbild von Delphi-Freak
Delphi-Freak

Registriert seit: 26. Sep 2004
Ort: Wien Nähe (Österreich)
321 Beiträge
 
Delphi 2006 Architect
 
#7

Re: Methoden einer Kompo überschreiben ohne eigene abzuleite

  Alt 28. Aug 2005, 14:32
Hey genial. Bin grad durch rumtesten draufgekommen:
Delphi-Quellcode:
TButton2 = class(TButton);
TButton = class(TButton2)
published
   procedure alert;
end;
und schon ist TButton eine Methode hinzugefügt. Habe es ausgetestet mit einer Form, darauf im OI Designer einen TButton draufplatziert und dann bei on Click Button1.alert aufgerufen und es hat funktioniert
Zwar nicht sehr elegant und irgendwie etwas komisch, aber es funktioniert!!!

Edit: Einrückung augebessert
Edit2: OI ist etwas falsch
Gerhard Pfister
*
»To him who loves us and has freed us from our sins by his blood [...] be glory and power for ever and ever! Amen.« (Revelation*1,*5?6)
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.481 Beiträge
 
Delphi 10.1 Berlin Professional
 
#8

Re: Methoden einer Kompo überschreiben ohne eigene abzuleite

  Alt 28. Aug 2005, 14:38
Zitat von Delphi-Freak:
Zwar nicht sehr elegant und irgendwie etwas komisch, aber es funktioniert!!!
Was ist daran komisch? Das ist nichts anderes als eine Ableitung. Nur das du die Basisklasse zu Gunsten der neuen Klassen umbenannt hast.
  Mit Zitat antworten Zitat
Benutzerbild von Delphi-Freak
Delphi-Freak

Registriert seit: 26. Sep 2004
Ort: Wien Nähe (Österreich)
321 Beiträge
 
Delphi 2006 Architect
 
#9

Re: Methoden einer Kompo überschreiben ohne eigene abzuleite

  Alt 28. Aug 2005, 14:46
Wie habe ich die Basisklasse umbenannt, eigentlich habe ich sie ja nur durch Neudefinition überschrieben, oder
Gerhard Pfister
*
»To him who loves us and has freed us from our sins by his blood [...] be glory and power for ever and ever! Amen.« (Revelation*1,*5?6)
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#10

Re: Methoden einer Kompo überschreiben ohne eigene abzuleite

  Alt 28. Aug 2005, 15:17
Das hättest du auch kürzer so haben können:
Delphi-Quellcode:
TButton = class(StdCtrls.TButton)
published
   procedure alert;
end;
Sicher ist das jetzt eine neue Klasse, genaugenommen die Klasse "DeineUnit.TButton" und nicht "StdCtrls.TButton". Wenn eine andere Unit dieses "TButton" benutzt, dann hängt von der Reihenfolge in der uses-Klausel ab, welcher TButton erzeugt wird.

Wenn du jetzt auf diese Weise "TSynEditStrList" neu definierst, dann sieht TSynEdit davon ja nichts, weil TSynEdit deine Unit nicht benutzt.
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:14 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz