Problem mit Farbe als Eigenschaft
-
Hallo,
ich habe eine Eigenschaft, die die Farbe eines Rechteckts bestimmen soll. Diese Eigenschaft befindet sich im Objektinspektor__property TColor Rect = {read = clBack, write = SetClBack};
Ich speicher die Farbe in einer privaten Variable namens clBack mit der Methode SetClBack. Im Konstruktor meiner Klasse initialisiere ich diese mit clBlack:
clBack = clBlack;
Nun möchte ich in einer Funktion, die von OnPaint aufgerufen wird, meinem "Stift" diese Farbe zuweisen:
TPen *bla; bla->Color = clBack;
Wenn ich jedoch meine Komponente nun nehme und aufs Formular tue, dann kommt sofort ein Zugriffsverletzung.
Weiß jemand woran das liegt?
Danke schön
-
Das hier funktioniert:
Canvas->Pen->Color = clBack;
-
TColor schrieb:
Das hier funktioniert:
Canvas->Pen->Color = clBack;
Hallo,
dann hat deine Komponente doch einen Pen
. Also eigentlich unnötig, was du vorhast.
Aber um deine Frage zu beantworten:
// *.h __published: TPen* FPen; void __fastcall SetPen(TPen* Value); __property TPen* Pen = {read=FPen, write=SetPen, nodefault}; // *.cpp // im Konstuktor : FPen = new TPen(); FPen->OnChange = StyleChanged; // Destruktor __fastcall TMeineKompo::~TMeineKompo(void) { delete FPen; } void __fastcall TMeineKompo::StyleChanged(TObject* /*Sender*/) { Invalidate(); }
Edit:
Was mir aufgefallen ist, nimm für deine Farbe eine andere Bezeichnung,
eine Farbe ist myBlue, clHellGelb oder so was, aber kein Rect!
-
TColor schrieb:
TPen *bla; bla->Color = clBack;
Du erstellst einen Zeiger von Typ TPen aber Zeigst auf nichts!