![]() |
Eigene Komponenten EClassNotFound bei TImage in TPanel
servus zusammen!
ich habe eine eigene komponente von TPanel abgeleitet und möchte jetzt im panel ein timage haben, um darauf zeichnen zu können etc. beim compilieren funktioniert das ganze auch einwandfrei, wenn ich sie jetzt aber in ein programm einbinde kommt sofort nach dem start eine "eclassnotfound: timage" exception. weiß da jemand rat? der code sieht so aus:
Delphi-Quellcode:
vielen dank im voraus und frohe ostern!
unit xtPanel;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls; type TxtPanel = class(TPanel) private img: timage; protected { Protected-Deklarationen } public constructor create(aowner: tcomponent); override; published { Published-Deklarationen } end; procedure Register; implementation procedure Register; begin RegisterComponents('Sonstiges', [TxtPanel]); end; constructor TxtPanel.create(aowner: tcomponent); begin inherited create(aowner); img := timage.create(self); img.Left := 0; img.top := 0; img.Width := width; img.height := height; img.canvas.TextOut(5,5,'test'); end; end. frederik |
Re: Eigene Komponenten EClassNotFound bei TImage in TPanel
Warum rufst du in deinem Konstruktor das Create des Owener auf, der ist mit großer Wahrscheinlichkeit ein nAnderer Typ. Du mußt den Konstruktor der Superklasse ( also TPanel )aufrufen mit
Delphi-Quellcode:
inherited create;
|
Re: Eigene Komponenten EClassNotFound bei TImage in TPanel
hö? ich ruf da doch das geerbte create von tpanel auf und übernehme einfach den besitzer :gruebel: 'inherited create' hat laut compiler+hilfe jedenfalls zu wenige parameter und mit dem owner 'self' krieg ich beim programmstart stacküberlauf...
habe das problem btw 'gelöst', indem ich einfach das paint-event des panels überschrieben und angepasst habe :???: würd mich aber trotzdem interessieren, wie man andere vcl in ner selbst erstellten komponente benutzen kann :wall: gruß shockrocker |
Re: Eigene Komponenten EClassNotFound bei TImage in TPanel
Hallo,
ich glaube, es hat nichts mit Deiner "neuen" Komponente zu tun. Der von Dir beschriebene Fehler tritt normalerweise auf, wenn man im Quelltext in der Formulardeklaration eine Komponente entfernt, das Formular aber diese Komponente noch enthält. Der Compiler bemerkt die Änderung nicht, beim Start des Programms wird aber unmittelbar eine Fehlermeldung ausgegeben. Hast Du vielleicht (versehentlich) eine Zeile innerhalb der Formulardeklaration gelöscht? Gruß Hawkeye |
Re: Eigene Komponenten EClassNotFound bei TImage in TPanel
erstmal thx für die schnellen antworten :thumb:
deklarationen habe ich keine entfernt. ich hab meine komponente abgeleitet und angelegt gehabt (wie sie oben steht) und dann getestet mit dem eclassnotfound-fehler. interessanterweise funktioniert das ganze, wenn ich manuell in meiner app zusätzlich zum TxtPanel manuell noch ein Timage draufziehe. gruß frederik |
Re: Eigene Komponenten EClassNotFound bei TImage in TPanel
Zitat:
![]() |
Re: Eigene Komponenten EClassNotFound bei TImage in TPanel
@Khabarakh:
Ich hab's gerade mal ausprobiert: - leeres Formular, TxtPanel-Komponente abgelegt, gespeichert => Delphi fügt "xtPanel" und "ExtCtrls" in die USES-Anweisung ein - beide Referenzen manuell entfernt, nicht gespeichert => beim Start des Compilers werden sie automatisch wieder eingefügt. Gäbe es denn eine Möglichkeit, das automatische Einfügen durch Delphi zu verhindern :gruebel: Das Ändern der "Optionen für Autospeichern" hat nichts gebracht... Gruß Hawkeye |
Re: Eigene Komponenten EClassNotFound bei TImage in TPanel
Zitat:
EDIT: davon abgesehen müsste es meinem form ja eigentlich schnuppe sein, ob extctrls eingebunden ist, wenn nur txtpanel ein timage benutzt :?: gruß frederik |
Re: Eigene Komponenten EClassNotFound bei TImage in TPanel
Zitat:
Delphi-Quellcode:
img.parent := self;
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:17 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