Zitat von
MaBuSE:
Zu den Schutzverletzungen:
Das scheint ein Bug im Delphi zu sein oder wir machen was grundlegend falsch.
Ich ahnte schon, das wir etwas falsch machen, deshalb habe ich es fett gemacht
Zitat von
Sidorion:
Ich nehm mal schwer an, das liegt an der Zuweisung:
FFont:=Value
Ich geh mal davon aus, dass Value das Fontobjekt des Eigenschafteditors ist. Wenn ja, dann wirds nach dem Aufruf der Property plattgeschlafen und in FFont stehr ien Zeiger in die Pampa.
Besser ist wohl:
FFont.Assign(Value)
Sidorion, Du hast Recht. Borland macht es ja genau so.
Delphi-Quellcode:
{*******************************************************}
{ Borland Delphi Visual Component Library }
{ Copyright (c) 1995-2002 Borland Software Corporation }
{*******************************************************}
unit Controls;
...
procedure TControl.SetFont(Value: TFont);
begin
FFont.Assign(Value);
end;
...
Das heißt bei Objekten sollte nie folgendes verwenden:
Delphi-Quellcode:
...
property Eigenschaft: TEigenschaft read FEigenschaft write FEigenschaft;
...
Da dort ja das selbe gemacht wird.
Besser ist dann
Delphi-Quellcode:
...
private
FEigenschaft: TEigenschaft;
procedure SetEigenschaft(Value: TEigenschaft);
published
property Eigenschaft: TEigenschaft read Feigenschaft write SetEigenschaft;
...
In SetEigenschaft muß dann das Objekt "richtig" übergeben werden.