AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Objektereignisse bei abgeleiteten Klassen

Ein Thema von Jean312 · begonnen am 13. Jan 2016 · letzter Beitrag vom 15. Jan 2016
Antwort Antwort
Jean312

Registriert seit: 1. Dez 2013
55 Beiträge
 
#1

AW: Objektereignisse bei abgeleiteten Klassen

  Alt 13. Jan 2016, 15:35
Vielen Dank für die Info. Ist das erste Mal, dass ich mich mit einer Klassenableitung beschäftige.
  Mit Zitat antworten Zitat
Jean312

Registriert seit: 1. Dez 2013
55 Beiträge
 
#2

AW: Objektereignisse bei abgeleiteten Klassen

  Alt 14. Jan 2016, 05:08
Sorry, irgendwie verstehe ich es nicht.
Soweit ich gelesen habe, werden die Eigenschaften der vererbten Klasse mitgegeben. Wenn ich also von TEDit eine Ableitung mache und ein property beispielsweise hinzufüge, bin ich davon ausgegangen, dass alle Eigenschaften von TEdit + das hinzugefügte property in der abgeleiteten Klasse verfügbar sind. Irrtum meinerseits oder falsch verstanden?
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#3

AW: Objektereignisse bei abgeleiteten Klassen

  Alt 14. Jan 2016, 06:01
Wo sollen sie denn 'verfügbar' sein? Im Objektinspektor? Dann muss die Property 'Published' sein.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.662 Beiträge
 
Delphi 12 Athens
 
#4

AW: Objektereignisse bei abgeleiteten Klassen

  Alt 14. Jan 2016, 07:32
Und auch das reicht nicht, sie muss auch in der IDE registriert sein.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Jean312

Registriert seit: 1. Dez 2013
55 Beiträge
 
#5

AW: Objektereignisse bei abgeleiteten Klassen

  Alt 14. Jan 2016, 15:52
Es geht hier ganz speziell um das OnChange-Ereignis. Die Komponente ist nicht im OI. Die abgeleitete Komponente ist über eine eigene Unit eingebunden.

Code:
type

  { TEditExt }

  TEditExt = Class(TEdit)
  private
    FCanvas:TCanvas;
    FCTextHint:string;
    FRequired:boolean;
    procedure WMPaint(var Message: TWMPaint); message WM_Paint;
    procedure SetCTextHint(const Value:string);
  protected
    procedure WndProc(var Message:TMessage); override;
    procedure Paint; virtual;
    procedure PaintWindow(DC:HDC);override;
    property Canvas:TCanvas read FCanvas;
  public
    constructor Create(AOwner:TComponent);override;
    destructor Destroy; override;
    property CTextHint:string read FCTextHint write SetCTextHint;
    property Required:boolean read FRequired write FRequired Default False;
    procedure PaintRedFrame;
  published
    property onClick;
    property onChange;
  end;


implementation

{ TEditExt }
...
Während der Laufzeit möchte ich dann in der MainUnit auf das OnChange-Ereignis einzelner Tedit-Komponenten (die mit erweiterten Eigenschaften während der Laufzeit erzeugt werden) reagieren.
Und hier komme ich nicht klar, wie das OnChange-Ereignis dann aufgerufen werden kann. Sorry.
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#6

AW: Objektereignisse bei abgeleiteten Klassen

  Alt 14. Jan 2016, 17:19
Wenn du eine Klasse entwickelst, die ein bereits verfügbares Objekt darstellen soll und zu diesem Zweck von der Klasse dieses verfügbaren Objekts ableitest, hast du erst einmal eine Komponente, die bereits alle Variablen und Methoden der Ursprungskomponente enthält. Die darin mußt du also nicht noch einmal deklarieren, denn sie sind in der neuen Klasse bereits durch Vererbung vorhanden – also eine 1:1-Kopie. Du mußt hier also nichts aus dem Quellcode der Ursprungsklasse kopieren. Nun möchtest du ein Property hinzufügen. Das fügst du hinzu mit allem was dazu gehört. Ansonsten mußt du nichts weiter hinzufügen. Wenn du in der neuen Klasse geerbte Methoden noch einmal deklarierst, überschreibst du damit die ursprünglichen und mußt sie dann natürlich auch selbst implementieren. Wenn du dagegen vorhandene Methoden lediglich erweitern willst, verwendest du den Befehl inherited. Das würde jetzt aber erst mal zu weit führen.
Delphi-Quellcode:
type
  TEditExt = Class(TEdit)
  private
    fMyProperty : Integer;

    function GetfMyProperty : Integer;
    procedure SetfMyProperty(value: Integer);

  protected
  public
  published
    property MyNewProperty : Integer read GetfMyProperty write SetfMyProperty;
  end;

implementation

function TEditExt.GetfMyProperty : Integer;
begin
  Result := fMyProperty;
end;

procedure TEditExt.SetfMyProperty(value: Integer);
begin
  fMyProperty := Value;
end;
Ob das neue Property nun public oder published ist, bleibt dir überlassen.
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#7

AW: Objektereignisse bei abgeleiteten Klassen

  Alt 14. Jan 2016, 18:27
Und denk an DeddyH seine Worte ('Registrieren').
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.157 Beiträge
 
Delphi 10.3 Rio
 
#8

AW: Objektereignisse bei abgeleiteten Klassen

  Alt 15. Jan 2016, 11:08
Es geht hier ganz speziell um das OnChange-Ereignis. Die Komponente ist nicht im OI. Die abgeleitete Komponente ist über eine eigene Unit eingebunden.
Daher wäre es hilfreich, wenn Du die Antworten auch lesen würdest...

Da Du Deine abgeleitete Komponente nicht als Komponente in der IDE registriert hast, musst Du natürlich alles was Du sonst im OI einstellst auch zur Laufzeit selber machen. Natürlich kannst Du bei OOP auf "alle" Methoden des Vorfahren zurück greifen...

Daher must Du die Property selber zuweisen... (Siehe die gegebenen Antworten "OnChange := MyOnChange;" oder so)

Mavarik
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.879 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Objektereignisse bei abgeleiteten Klassen

  Alt 15. Jan 2016, 11:58
Und für dynamisch erzeugte Komponenten fällt der OI natürlich sowieso flach.
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort


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 18:55 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