Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 9830872

Browse files
committed
Handle assignment of Py_None to an event property.
1 parent 9a28d92 commit 9830872

File tree

1 file changed

+16
-8
lines changed

1 file changed

+16
-8
lines changed

Source/WrapDelphi.pas

+16-8
Original file line numberDiff line numberDiff line change
@@ -1610,16 +1610,24 @@ function TExposedEvent.SetterWrapper(AObj, AValue: PPyObject; AContext: Pointer)
16101610
end;
16111611
end;
16121612

1613-
EventHandler := TRttiEventHandler.Create(FPyDelphiWrapper,
1614-
RttiProp.PropInfo, AValue, RttiProp.PropertyType as TRttiMethodType);
1613+
if AValue = GetPythonEngine.Py_None then
1614+
begin
1615+
Method.Code := nil;
1616+
Method.Data := nil;
1617+
end
1618+
else
1619+
begin
1620+
EventHandler := TRttiEventHandler.Create(FPyDelphiWrapper,
1621+
RttiProp.PropInfo, AValue, RttiProp.PropertyType as TRttiMethodType);
16151622

1616-
Method.Code := EventHandler.CodeAddress;
1617-
Method.Data := EventHandler;
1618-
SetMethodProp(Obj, RttiProp.PropInfo, Method);
1623+
if not Assigned(PyObject.fEventHandlers) then
1624+
PyObject.fEventHandlers := TObjectList.Create(True);
1625+
PyObject.fEventHandlers.Add(EventHandler);
16191626

1620-
if not Assigned(PyObject.fEventHandlers) then
1621-
PyObject.fEventHandlers := TObjectList.Create(True);
1622-
PyObject.fEventHandlers.Add(EventHandler);
1627+
Method.Code := EventHandler.CodeAddress;
1628+
Method.Data := EventHandler;
1629+
end;
1630+
SetMethodProp(Obj, RttiProp.PropInfo, Method);
16231631

16241632
Result := 0;
16251633
except

0 commit comments

Comments
 (0)