Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi zurückgreifen auf Variablen in einer höheren Vererbungsstufe (https://www.delphipraxis.net/135270-zurueckgreifen-auf-variablen-einer-hoeheren-vererbungsstufe.html)

BAMatze 8. Jun 2009 09:59


zurückgreifen auf Variablen in einer höheren Vererbungsstufe
 
Hallo und guten Tag an alle DP´ler,

Hab mal eine Frage zu der Vererbung, welche ich hier mit der SuFu und auch mit dem Tutorial der Delphi-Treff-Seite nicht vollständig beantworten kann. Vieleicht kann mir hier schnell jemand helfen.

Also ich habe eine Komponente mit 1 Edit und 1 Label. Diese werden in der Ursprungskomponente definiert und auch ihr zusammen Spiel (sprich das Label zeigt das gleich an, wie das Edit). Jetzt möchte ich von dieser Ursprungskomponente eine weitere Komponente ableiten, bei der ich einen gewissen Anhang an die Anzeige des Labels zusätzlich machen möchte. Hierbei gibt es aber ein paar Probleme.

Für alle die dies vieleicht nicht verstanden haben hier ein Beispiel:
Zitat:

In der Ursprungskomponente ist z.B. der Wert des Edit.Text = "2000" und somit hat auch das Label.Caption den Wert "2000".

In der abgeleiteten Komponente möchte ich nun, dass das Label einen Anhang bekommt, also Edit.Text ist immer noch "2000" aber das Label.Caption ist nun "2000m" also eine Erweiterung wurde angehängt.
Wie muss ich in der Ursprungskomponente das TEdit und TLabel deklarieren, damit ich in der Ursprungskomponente immer noch drauf zugreifen kann?

Vielen Dank
BAMatze

Ps.: oder muss ich eine Methode schreiben, die ich dann später überschreibe, in welcher ich dies handle?

SirThornberry 8. Jun 2009 10:38

Re: zurückgreifen auf Variablen in einer höheren Vererbungss
 
in deinem speziellen Fall wäre es das einfachste diese Funktion welche die Labelcaption setzt als virtual zu declarieren und in den protected Abschnitt zu verschieben:
Delphi-Quellcode:
TBase = class(...)
protected
  procedure UpdateLabelCaption(ANewCaption: String); virtual;
end;

procedure TBase.UpdateLabelCaption(ANewCaption: String);
begin
  Label.caption := ANewCaption;
end;
in der Ableitung sieht das ganze dann so aus:
Delphi-Quellcode:
TAbleitung = class(TBase)
protected
  procedure UpdateLabelCaption(ANewCaption: String); override;
end;

procedure TAbleitung.UpdateLabelCaption(ANewCaption: String);
begin
  inherited UpdateLabelCaption(ANewCaption + 'm');
end;
Entsprechend müsstest du natürlich im OnChange deines Edits (in der Basisklasse) die Methode UpdateLabelCaption aufrufen.

BAMatze 8. Jun 2009 10:51

Re: zurückgreifen auf Variablen in einer höheren Vererbungss
 
Hallo SirThornberry,

genau daran hab ich ebend auch gearbeitet, aber ich hab immer versucht auf das Label direkt wieder zurückzugreifen. Deine Methode ist natürlich schön einfach. Dank dir, funzt so wie ich mir das Vorstelle.

Vielen Dank
BAMatze


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:06 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