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 Kompenente funktioniert zur Laufzeit aber nicht im Designer (https://www.delphipraxis.net/172516-kompenente-funktioniert-zur-laufzeit-aber-nicht-im-designer.html)

Tonic1024 8. Jan 2013 16:41

Kompenente funktioniert zur Laufzeit aber nicht im Designer
 
Hi...

Es ist schon mehrere Delphi-Versionen her, dass ich zuletzt eine eigene Komponente entwickelt hab. Jetzt ist es mal wieder so weit. Ich hab mir, wie früher, eine Klasse von TPanel abgeleitet und daraus eine eigene Komponente erstellt. Wenn ich das Objekt zur Laufzeit erstelle funktioniert sie super aber jetzt will ich sie im Formulardesigner verwenden und es klemmt.

Delphi-Quellcode:
type
  TContentPanel = class(TPanel)
  private

    FTitleImage: TImage;
[..]
  public
    constructor Create(AOwner: TComponent);
[..]
    procedure SetParent(AParent: TWinControl); override;
[..]

constructor TContentPanel.Create(AOwner: TComponent);
begin
  inherited;

  [..]

  FTitleImage:=TImage.Create(self);
  FTitleImage.Parent:=Self;

  [..]
end;


procedure TContentPanel.SetParent(AParent: TWinControl);
begin
  inherited;

  [..]

  if Assigned(FTitleImage) then // an dieser Stelle scheint FTitleImage nicht zu existieren
  begin
    FTitleImage.Parent:=Self;
    FTitleImage.Picture.LoadFromFile('c:\xxx\test.png');
    FTitleImage.Stretch:=true;
    FTitleImage.Proportional:=false;
    FTitleImage.OnMouseDown:=TitleMouseDown;
    FTitleImage.OnDragOver:=TitleDragOver;
  end;

  [..]
end;
Ich brüte da schon den ganzen Nachmittag drüber. Irgendwie gehen mir die Ideen aus.


Gruß,

Toni

stahli 8. Jan 2013 16:46

AW: Kompenente funktioniert zur Laufzeit aber nicht im Designer
 
Den Constructor musst Du override deklarieren. ;-)

Tonic1024 8. Jan 2013 16:47

AW: Kompenente funktioniert zur Laufzeit aber nicht im Designer
 
Im Ernst? Dann fliegt mir das ganze Ding um die Ohren... Hab isch doch sonst nich gemacht *wunder*

Uwe Raabe 8. Jan 2013 16:50

AW: Kompenente funktioniert zur Laufzeit aber nicht im Designer
 
Zitat:

Zitat von Tonic1024 (Beitrag 1198251)
Im Ernst? Dann fliegt mir das ganze Ding um die Ohren...

Dann machst du was falsch. Der constructor von Komponenten muss immer override sein, sonst wird er vom Streaming-System und von der IDE zur Design-Zeit nicht aufgerufen.

Tonic1024 8. Jan 2013 17:00

AW: Kompenente funktioniert zur Laufzeit aber nicht im Designer
 
Ach so. Ja gut, das mach ich ja nicht so oft (also in etwa gar nie). Dann hab ich auch nichts gesagt :-D

Ist auch so. Hab alles auskommentiert was nicht unbedingt erforderlich ist um ein Panel auf dem Form zu zeichen und siehe da... Kaum macht mans richtig schon funktionierts. Der Fehler (das um die Ohren fliegen) liegt also ganz wo anders.

Ich danke euch. Muss nun erstmal debuggen...

Toni


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