Der Inspektor sollte auch mit der Eigenschaft klarkommen, wenn du die Instanz von Graphic in der Komponente erzeugst und beim Setter der Eigenschaft darauf achtest, dass du dir die interne Instanz nicht überschreibst, sondern dass diese mit Assign() die zugewiesene Instanz inhaltlich übernimmt.
Nochmal im Detail:
1. Im Constructor alle Instanzen von TGraphic erzeugen
Delphi-Quellcode:
FGraphic := TGraphic.Create;
FGraphicOver := TGraphic.Create;
FGraphicDown := TGraphic.Create;
2. In den Setter mit Assign() arbeiten damit du deine Instanz behälst.
Delphi-Quellcode:
procedure TEButton.SetGraphic(const Value: TGraphic);
begin
FGraphic.Assign(Value);
RePaint;
end;
3. Im Destruktor die Instanzen wieder freigeben
Bug! Du löscht die Region nach der Übergabe der Region an SetWindowRgn(). Ich empfehle die
MSDN zu konsultieren:
Zitat von
MSDN: SetWindowRgn():
After a successful call to SetWindowRgn, the system owns the region specified by the region
handle hRgn. The system does not make a copy of the region.
Thus, you should not make any further function calls with this region handle. In particular, do not delete this region handle. The system deletes the region
handle when it no longer needed.
Also
unbedingt und sofort das DeleteObject(Rgn) danach rausschmeissen.
Nach weiteren Dingen habe ich nun nicht mehr geschaut...