Ich habe da ein winziges Problemchen,
Assigned liefert falsche Werte, also False obwohl es True sein müsste.
Minimalbeispiel:
Delphi-Quellcode:
type
TMyComp = class(TComponent)
private
FTest: TNotifyEvent;
function TestStored: Boolean;
published
property TestProp: TNotifyEvent read FTest write FTest stored TestStored;
end;
function TMyComp.TestStored: Boolean;
begin
Result := Assigned(TestProp);
end;
Wie kann ich zur DesignTime feststellen, ob irgendwas zugewiesen ist, wenn Assigned nicht hilft? (in einem Setter/Getter/StoredProc)
Wenn ich hier einen Setter an dem Property habe und da im ObjektInspector ein Event zuweise, dann wird der Setter auch aufgerufen.
Auch eine Prüfung ob ein bestimmtes Event zugewiesen ist (im Contructor zugewiesen und im
OI überschreibbar) funktioniert da nicht.
Delphi-Quellcode:
function TMyConnection.BeforeConnectStored: Boolean;
begin
Result := Assigned(BeforeConnect) and (TMethod(BeforeConnect).Code <> @TMyConnection.DoBeforeConnect);
end;
constructor TMyConnection.Create(Owner: TComponent);
begin
inherited;
BeforeConnect := DoBeforeConnect;
end;
Und nein, ich muß mich leider so an die Events hängen, da die Komponenten keine Möglichkeit einer überschreibbaren virtuellen Methode bietet.
(TPgConnection, aber der Schrott fängt schon bei
DB Access von Devart an)