AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Basisklasse und davon abgeleitet drei Standardklassen
Thema durchsuchen
Ansicht
Themen-Optionen

Basisklasse und davon abgeleitet drei Standardklassen

Ein Thema von s-off · begonnen am 8. Okt 2007 · letzter Beitrag vom 10. Okt 2007
Antwort Antwort
s-off
(Gast)

n/a Beiträge
 
#1

Re: Basisklasse und davon abgeleitet drei Standardklassen

  Alt 8. Okt 2007, 16:44
Zitat von Khabarakh:
man möchte schließlich das freakigstmögliche Design-Pattern einsetzen


Naja, zu den Hintergründen - den Sinn habe ich ja bereits erläutert, und ich sehe ein, dass Mehrfachvererbung eine nette Sache wäre.

Ich habe es jetzt so gelöst, dass ich einfach in der Basisklasse ein Feld 'FControl' und eine entsprechende Property dazu erstellt habe, dem ich dann im Constructor, den ich in den Kindklassen überschreibe, einfach eine Instanz der entsprechenden Klasse zuweise, und erst danach den Constructor der Basisklasse aufrufe.
Dann spreche ich das Ganze halt hinterher nicht nur mit dem Instanzennamen an, sondern mit Instanzenname.Control
Mit Mehrfachvererbung hätte mir zwar besser gefallen, aber so gehts auch.

Delphi-Quellcode:
   TBasisklasse = Class
   private
      FControl: TControl;
      FEigenschaft1: Integer;
      FEigenschaft2: Integer;
      FWind: Integer;
      Procedure SetWind(Const Value: Integer);
   public
      Constructor Create(AOwner: TComponent); virtual;
      Property Control: TControl read FControl;
      Property Wind: Integer read FWind write SetWind;
   End;

   TEditklasse = Class(TBasisklasse)
   public
      Constructor Create(AOwner: TComponent); override;
   End;

   TLabelklasse = Class(TBasisklasse)
      Constructor Create(AOwner: TComponent); override;
   End;

   TMemoklasse = Class(TBasisklasse)
      Constructor Create(AOwner: TComponent); override;
   End;

[...]

Constructor TBasisklasse.Create(AOwner: TComponent);
Begin
   FEigenschaft1: FControl.Width;
   FEigenschaft2: FControl.Height;
End;

Procedure TBasisklasse.SetWind(Const Value: Integer);
Begin
   FWind := Value;
   FControl.Width := FEigenschaft1 * Value;
   FControl.Height := FEigenschaft2 * Value;
End;

Constructor TEditklasse.Create(AOwner: TComponent);
Begin
   FControl := TEdit.Create(AOwner);
   Inherited;
End;

Constructor TLabelklasse.Create(AOwner: TComponent);
Begin
   FControl := TLabel.Create(AOwner);
   Inherited;
End;

Constructor TMemoklasse.Create(AOwner: TComponent);
Begin
   FControl := TMemo.Create(AOwner);
   Inherited;
End;
Edit: freue mich natürlich noch immer über anderweitige Lösungsmöglichkeiten, wenn Ihr welche habt
  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 05:41 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