Hallo! Ich verwende folgende Klassendefinition:
Delphi-Quellcode:
type
TSelection = class(TGraphicControl)
private
FSelRect: Trect;
FHitRegion: Integer;
FHitPoint: TPoint;
FOldSelRectWidth: Integer;
FOldSelRectHeight: Integer;
FHorizontalMargins: Boolean;
FFactorV, FFactorH: Extended;
FSelFrameRect: TRect;
FShowSize: Boolean;
FTheImage: TImage;
procedure SetShowSize(const Value: Boolean);
procedure SetTheImage(const Value: TImage);
protected
procedure MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
procedure MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
procedure MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); inline;
procedure Paint; override;
procedure Resize(Sender: TObject);
procedure SetSelFrameMargins; inline;
public
Constructor Create(AOwner: TComponent); override;
property SelFrameRect: TRect read FSelFrameRect;
published
property ShowSize: Boolean read FShowSize write SetShowSize;
property TheImage: TImage read FTheImage write SetTheImage;
end;
Ein Projekt, in dem ich diese Komponente und andere zusätzlich Standard-Komponenten verwende, compiliert ohne Probleme. ABER: Sobald ich einen
TButton zum Formular hinzufüge, kommt die Compiler-Fehlermeldung:
"[DCC Fehler] Unit1.pas(13): E2217 Published-Feld 'Selection1' ist weder vom Typ class noch interface"
und der Cursor springt zu
Selection1: TSelection; in der Formular-Deklaration. Aber jetzt kommt's: Auch wenn ich den Button wieder entferne, kommt immer wieder die gleiche Compiler-Fehlermeldung!!!
Die einzige Abhilfe ist die Erstellung eines völlig neuen Projektes mit den gleichen Komponenten, bis - ja bis zum Einfügen eines TButtons ...
Wer weiß, was die Ursache des Problems sein könnte und wie man eine Lösung finden könnte?
Edit: Wenn ich nach dem Entfernen des Buttons auch
Vcl.StdCtrls aus der uses-Klausel entferne, dann verschwindet die Fehlermeldung wieder. Offenbar ist eine der Deklarationen in meiner Klasse inkompatibel mit
Vcl.StdCtrls.
Welche Regeln muss man bei der Klassendeklaration befolgen, um solche Inkompatibilitäten mit bestehenden Klassen zu vermeiden?