![]() |
Fehler bei der Verwendung von eigener Komponente
Hallo,
Habe mir eine eigene Komponente aus der TCustomComboBox programmiert. Diese funktioniert auch problemlos (kein Fehler bei der Compilierung). Wenn ich die Komponente in ein Programm einbaue, startet dieses auch problemlos, allerdings erzeuge ich eine Exception direkt nach dem Start. Hier der Quellcode für die Komponente:
Delphi-Quellcode:
Hier die Fehlermeldung, die erscheint, wenn die Komponente in ein Projekt eingebaut wurde:
unit StageSelect;
interface uses SysUtils, Classes, Controls, StdCtrls; const Ext_Lib1 = 'D:\Tischsteuerung\MMC.dll'; //const Ext_Lib2 = 'D:\Tischsteuerung\E816_DLL.dll'; type TTische =(Verschiebetisch1, Verschiebetisch2, PiezoVerschiebetisch); type TStageSelect = class(TCustomComboBox) private bVerbindungstest: boolean; FID1: integer; FTisch: TTische; FIndex: integer; procedure GetID(Value: integer); { Private-Deklarationen } protected { Protected-Deklarationen } public property ID1:integer read FID1 write GetID; function Verbindungstest(Objekt: TTische): integer; { Public-Deklarationen } published property Tisch: TTische read FTisch write FTisch; { Published-Deklarationen } end; procedure Register; function MMC_getReport(pCmd,psRead:PChar):integer; stdcall external Ext_Lib1; //function E816_IsConnected(ID: integer): boolean; stdcall external Ext_Lib2; implementation procedure TStageSelect.GetID(Value: integer); begin if Value <> ID1 then ID1 := Value; end; procedure Register; begin RegisterComponents('Samples', [TStageSelect]); end; function TStageSelect.Verbindungstest(Objekt: TTische): integer; var psRead: array[0..500] of Char; begin if Objekt in [Verschiebetisch1,Verschiebetisch2] then result := MMC_getReport('TS',psRead); end; end. "Im Projekt Project1.exe ist eine Exception der Klasse EReadError mit der Meldung'Eigenschaft Tisch existiert nicht.' aufgetreten." Kann mir einer sagen, wie ich die Komponente abändern muss, damit dies nicht mehr vorkommt. Vielen Dank im Vorraus BAMatze |
Re: Fehler bei der Verwendung von eigener Komponente
propiere mal eine "default" eigenschaft hinter der published property anzufügen.
|
Re: Fehler bei der Verwendung von eigener Komponente
Ich vermisse da ein klitzekleines create()
- oder braucht man das etwa nicht? |
Re: Fehler bei der Verwendung von eigener Komponente
Zitat:
|
Re: Fehler bei der Verwendung von eigener Komponente
Zitat:
Ist Müll da keine Klasse. Der Member wird natürlich initialisert mit dem ersten Typ der Aufzählung. |
Re: Fehler bei der Verwendung von eigener Komponente
Hallo,
schau mal da --> ![]() Da hilft Dir eventuell irgend ein Link weiter (z. B. erster Link, dort EReadError suchen - entspricht wohl der Info aus der Delphi-Hilfe). EReadError tritt meines Wissens auf, wenn beim Erstellen eines Formulares etwas aus der Resource gelesen werden soll, was da nicht drin ist. Vermutlich gibt es in der DFM-Datei zum Formular irgendwo einen Fehler. DFM mal als Text anschauen und dann wieder als Formular, manchmal werden dann Fehler beseitigt. Anschließend neu kompilieren und nochmal versuchen. Ansonsten ist Delphi eventuell nicht in der Lage, Deinen Nachfahren von TCustomComboBox richtig zu erstellen. Stephan |
Re: Fehler bei der Verwendung von eigener Komponente
***
Vergesst den Post. Irgendwie war ich von einer Klasse bei TTische ausgegangen :gruebel: |
Re: Fehler bei der Verwendung von eigener Komponente
Hallo,
Delphi-Quellcode:
FTisch müsste meiner Meinung nach ein Set Of TTische sein.
type TTische =(Verschiebetisch1, Verschiebetisch2, PiezoVerschiebetisch);
. . . FTisch: TTische;
Delphi-Quellcode:
Stephan
type TTisch =(Verschiebetisch1, Verschiebetisch2, PiezoVerschiebetisch);
TTische = set of TTisch; . . . FTisch: TTische; |
Re: Fehler bei der Verwendung von eigener Komponente
Wieso? Ein Set müsste es IMHO sein, wenn verschiedene Kombinationen möglich sind.
|
Re: Fehler bei der Verwendung von eigener Komponente
Hallo,
Zitat:
Mir ist die Umsetzung eines Konstrukts, wie hier beschrieben, noch nicht in der Form geglückt, dass die Eigenschaft auch im Objektinspektor zu sehen ist und (korrekt) in der Formulardatei abgespeichert wurde, sprich ohne den EReadError (Das heißt jetzt aber nicht, das es nicht vielleicht doch irgendwie ginge :wink:) Stephan |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06: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 by Thomas Breitkreuz