AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Eigene Komponenten EClassNotFound bei TImage in TPanel
Thema durchsuchen
Ansicht
Themen-Optionen

Eigene Komponenten EClassNotFound bei TImage in TPanel

Ein Thema von shockrocker · begonnen am 16. Apr 2006 · letzter Beitrag vom 17. Apr 2006
Antwort Antwort
shockrocker

Registriert seit: 16. Apr 2006
Ort: Karlsruhe
9 Beiträge
 
Delphi 5 Standard
 
#1

Eigene Komponenten EClassNotFound bei TImage in TPanel

  Alt 16. Apr 2006, 18:32
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:
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.
vielen dank im voraus und frohe ostern!
frederik
Frederik Trinkmann
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Eigene Komponenten EClassNotFound bei TImage in TPanel

  Alt 17. Apr 2006, 11:11
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
inherited create;
Markus Kinzler
  Mit Zitat antworten Zitat
shockrocker

Registriert seit: 16. Apr 2006
Ort: Karlsruhe
9 Beiträge
 
Delphi 5 Standard
 
#3

Re: Eigene Komponenten EClassNotFound bei TImage in TPanel

  Alt 17. Apr 2006, 11:39
hö? ich ruf da doch das geerbte create von tpanel auf und übernehme einfach den besitzer '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

gruß
shockrocker
Frederik Trinkmann
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#4

Re: Eigene Komponenten EClassNotFound bei TImage in TPanel

  Alt 17. Apr 2006, 11:48
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
  Mit Zitat antworten Zitat
shockrocker

Registriert seit: 16. Apr 2006
Ort: Karlsruhe
9 Beiträge
 
Delphi 5 Standard
 
#5

Re: Eigene Komponenten EClassNotFound bei TImage in TPanel

  Alt 17. Apr 2006, 11:55
erstmal thx für die schnellen antworten

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
Frederik Trinkmann
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#6

Re: Eigene Komponenten EClassNotFound bei TImage in TPanel

  Alt 17. Apr 2006, 12:03
Zitat von shockrocker:
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.
Wahrscheinlich war ExtCtrls nicht in der Form-Unit eingebunden, durch das explizite Hinzufügen des Images wurde sie nun eingebunden.
http://www.delphipraxis.net/internal...ect.php?t=3128
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#7

Re: Eigene Komponenten EClassNotFound bei TImage in TPanel

  Alt 17. Apr 2006, 12:25
@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
Das Ändern der "Optionen für Autospeichern" hat nichts gebracht...

Gruß Hawkeye
  Mit Zitat antworten Zitat
shockrocker

Registriert seit: 16. Apr 2006
Ort: Karlsruhe
9 Beiträge
 
Delphi 5 Standard
 
#8

Re: Eigene Komponenten EClassNotFound bei TImage in TPanel

  Alt 17. Apr 2006, 12:59
Zitat von Khabarakh:
Wahrscheinlich war ExtCtrls nicht in der Form-Unit eingebunden, durch das explizite Hinzufügen des Images wurde sie nun eingebunden.
doch doch, das hab ich extra geschaut. die extctrls war sowohl in der form-unit als auch in txtpanel eingebunden...

EDIT: davon abgesehen müsste es meinem form ja eigentlich schnuppe sein, ob extctrls eingebunden ist, wenn nur txtpanel ein timage benutzt

gruß
frederik
Frederik Trinkmann
  Mit Zitat antworten Zitat
TStringlist

Registriert seit: 1. Dez 2003
360 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Eigene Komponenten EClassNotFound bei TImage in TPanel

  Alt 17. Apr 2006, 15:47
Zitat von shockrocker:
würd mich aber trotzdem interessieren, wie man andere vcl in ner selbst erstellten komponente benutzen kann
Nötig dafür übrigens auch: Jede weitere Unterkomponente (wie hier dein 'img') muss, sofern diese von TWinControl abstammt, dann natürlich auch noch ihre Parent-Property geladen bekommen. Sonst kann sie nämlich keine Ahnung haben, worauf sie sich überhaupt abbilden soll:

img.parent := self;
MfG (& Thx ggf.)
  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 19:41 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