Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi neue basiscomponente von Tcustomcontrol ableiten (https://www.delphipraxis.net/9490-neue-basiscomponente-von-tcustomcontrol-ableiten.html)

kiar 27. Sep 2003 15:41


neue basiscomponente von Tcustomcontrol ableiten
 
ich leite eine neue basiscomponente von TCustomcontrol ab. in dieser will ich nur einen container bereitstellen auf dem ich die grafischen symbole zeichnen will. das die paint methode virtuell ist, muß ich doch in der basiscompo diese paintmethode doch nicht überschreiben, wenn ich diese nicht brauche, sondern nur in den nachfahren der basiscomponente, oder ?? :spin2:

Christian Seehase 27. Sep 2003 15:47

Re: neue basiscomponente von Tcustomcontrol ableiten
 
Moin Kiar,

ausser bei abstrakten Methoden (soweit vorhanden), braucht man sich nicht um die Methoden des Vorfahren zu kümmern, wenn sie so wie sie sind in der abgeleiteten Klasse verwendet werden können.

kiar 27. Sep 2003 15:53

Re: neue basiscomponente von Tcustomcontrol ableiten
 
das kann ich nicht ganz verstehen . in der paintmethode von customcontrol steht ja nichts drin?
Delphi-Quellcode:

basiscopo = class(Tcustomcontrol)

 private
   hbm: TBitmap;
 public
   constructor create(AOwner TComponent); override;
   destructor destroy; override;
end;

nachfahre = class( TBasiscompo)
 
 public
   procedure paint; override; // muss diese nicht schon in der vorherigen deklaration aufgerufen werden ?

Christian Seehase 27. Sep 2003 16:24

Re: neue basiscomponente von Tcustomcontrol ableiten
 
Moin kiar,

nein, dadurch, dass TBasisCompo von TCustomControl abgeleitet wird, und diese die Methode Paint enthält (mindestens als proteced deklariert), enthält TBasisCompo die Methode auch. Durch das überschreiben hat man nur die Möglichkeit die Arbeitsweise einer geerbten Methode (virtual/dynamic) zu verändern, man muss es nur nicht.
Da in diesem speziellen Falle die Methode unter protected deklariert ist, kann auf diese allerdings nicht in einer anderen Unit darauf zugreifen, wenn man eine Instanz von TBasisCompo bildet.

Schau Dir dazu auch mal den Abschnitt über private, protected und public in der Hilfe an.

Beispiel:
In der Unit1 wird TBasisCompo deklariert, in Unit2 TNachfahr (hier wird Paint veröffentlicht), und in Unit3 wird eine Instanz von TNachfahr gebildet

Delphi-Quellcode:
// Unit1

type
  TBasisCompo = class(TCustomControl)
  end;

// Unit2

uses ..., unit1;

type
  TNachfahr = class(TBasisCompo)
  public
    procedure Paint; override;
  end;

implementation

procedure TNachfahr.Paint;
begin
  //...
end;

// Unit3

implementation
uses unit2;

procedure TForm3.Button1Click(Sender: TObject);

var
  nf : TNachfahr;

begin
  nf := TNachfahr.Create(self);
  nf.Paint;
end;

kiar 27. Sep 2003 16:41

Re: neue basiscomponente von Tcustomcontrol ableiten
 
ich denke iich habe es begriffen :thuimb:

danke chris


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