Easily Pass Values Between Delphi And Python In Your Windows Delphi/C++ Builder Apps
function TForm1.GetProperty(pSelf, Args : PPyObject) : PPyObject; cdecl;
var
key : PAnsiChar;
begin
with GetPythonEngine do
if PyArg_ParseTuple( args, ‘s:GetProperty’,@key ) > 0 then
begin
if key = ‘Title’ then
Result := VariantAsPyObject(cbTitle.Text)
else if key = ‘Name’ then
Result := VariantAsPyObject(edName.Text)
else if key = ‘Informatician’ then
Result := VariantAsPyObject(cbInformatician.Checked)
else if key = ‘PythonUser’ then
Result := VariantAsPyObject(cbPythonUser.Checked)
else if key = ‘Age’ then
Result := VariantAsPyObject(edAge.Text)
else if key = ‘Sex’ then
Result := VariantAsPyObject(rgSex.ItemIndex)
else
begin
PyErr_SetString (PyExc_AttributeError^, PAnsiChar(Format(‘Unknown property “%s”‘, [key])));
Result := nil;
end;
end
else
Result := nil;
end;
function TForm1.SetProperty(pSelf, Args : PPyObject) : PPyObject; cdecl;
var
key : PAnsiChar;
value : PPyObject;
begin
with GetPythonEngine do
if PyArg_ParseTuple( args, ‘sO:SetProperty’,@key, @value ) > 0 then
begin
if key = ‘Title’ then
begin
cbTitle.Text := PyObjectAsVariant( value );
Result := ReturnNone;
end
else if key = ‘Name’ then
begin
edName.Text := PyObjectAsVariant( value );
Result := ReturnNone;
end
else if key = ‘Informatician’ then
begin
cbInformatician.Checked := PyObjectAsVariant( value );
Result := ReturnNone;
end
else if key = ‘PythonUser’ then
begin
cbPythonUser.Checked := PyObjectAsVariant( value );
Result := ReturnNone;
end
else if key = ‘Age’ then
begin
edAge.Text := PyObjectAsVariant( value );
Result := ReturnNone;
end
else if key = ‘Sex’ then
begin
rgSex.ItemIndex := PyObjectAsVariant( value );
Result := ReturnNone;
end
else
begin
PyErr_SetString (PyExc_AttributeError^, PAnsiChar(Format(‘Unknown property “%s”‘, [key])));
Result := nil;
end;
end
else
Result := nil;
end;