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 Visuelle Komponente entwickeln (https://www.delphipraxis.net/104266-visuelle-komponente-entwickeln.html)

guidok 30. Nov 2007 12:18


Visuelle Komponente entwickeln
 
Hallo, ich bins mal wieder...

Ich habe mir eine Klasse von TPanel abgeleitet, im Constructor ein paar Eingenschaften angepasst und noch ein paar zusätzliche Sachen eingebaut. Soweit so gut.

Da ich mit Turbo Explorer unterwegs gewesen bin habe ich mir auch keine Gedanken zu Komponenten gemacht, weil ich die Klasse sowieso aus dem Quelltext erstellt habe und das funktionierte auch mit allen gewünschten Funktionen.

Jetzt habe ich Turbo Professional und möchte natürlich daraus eine Komponente entwickeln, um die Programmoberfläche auch schnell und einfach grafisch zur Entwurfszeit erstellen zu können und da fangen die Probleme auch schon an.

Wie ich ein Package erstelle und die Komponente installiere, habe ich jetzt schon hingekriegt. Der Einfachheit halber habe ich auch erst mal nur eine Klasse von TPanel abgeleitet und möchte einfach, dass der Rahmen optisch meinen Gegebenheiten entspricht. Ich habe das, wie bisher, in den Constructor geschrieben, aber weder zur Entwurfs- noch zur Laufzeit ändert sich etwas im Vergleich zum eigentlichen TPanel. Jetzt steh ich grad auf dem Schlauch. Wie geht das sinnvoll??

Delphi-Quellcode:
type
  TbrosePanel = class(TPanel)
  private
    { Private-Deklarationen }
  protected
    { Protected-Deklarationen }
  public
    { Public-Deklarationen }
    constructor Create(AOwner: TComponent); Reintroduce;
  published
    { Published-Deklarationen }
  end;

procedure Register;

implementation

uses Forms;

procedure Register;
begin
  RegisterComponents('Brose', [TbrosePanel]);
end;

constructor TbrosePanel.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  BevelInner := bvNone;
  BevelKind := bkFlat;
  BevelOuter := bvNone;
  BorderStyle := bsNone;
end;

Deep-Sea 30. Nov 2007 12:28

Re: Visuelle Komponente entwickeln
 
Nebenbei:
Zitat:

Zitat von guidok
Delphi-Quellcode:
constructor Create(AOwner: TComponent); Reintroduce;

Ändere das reintroduce mal bitte in override :wink:

Muetze1 30. Nov 2007 13:06

Re: Visuelle Komponente entwickeln
 
Zitat:

Zitat von Deep-Sea
Nebenbei:

Wieso nebenbei? Das ist der Fehlergrund! Die VCL ruft den virtuellen Constructor auf und er führt einen neuen ein. Somit wird der von TPanel vererbte durchlaufen aber nicht sein neu eingeführter (was ja verständlich ist) und somit werden seine Einstellungen nicht übernommen.

Deep-Sea 30. Nov 2007 13:09

Re: Visuelle Komponente entwickeln
 
Zitat:

Zitat von Muetze1
Zitat:

Zitat von Deep-Sea
Nebenbei:

Wieso nebenbei?

Lass mir doch etwas Sarkasmus :P
(reintroduce ist etwas, was man soo selten nutzen kann, wie kommt man also da drauf, das so zu machen?)

guidok 30. Nov 2007 16:19

Re: Visuelle Komponente entwickeln
 
Ok, bei override, virtual, reintroduce habe ich noch so meine Probleme...

Bei meiner Klassenversion (nicht Komponente) lautete der Konstruktor noch anders, weil ich mit dem Erzeugen der Instanz auch gleich den Parent angeben wollte. Hat so auch funktioniert.
Delphi-Quellcode:
constructor Create(AOwner: TComponent, AParent: TControl); Reintroduce;
Da hatte ich vorher "reintroduce" weggelassen und bekam dafür zumindest eine Warnung.

Vielleicht kann man mir das mal mit verständlichen Worten erklären, wäre schön?

Ich bin mit meiner Komponente nun auch auf gutem Wege, so am Rande...


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