第二个问题可以解决,在 TsncDBCurrencyEdit 增加一个函数
procedure WMPaint(var Message: TWMPaint); message WM_PAINT;
实现部分这样写
procedure TsncDBCurrencyEdit.WMPaint(var Message: TWMPaint);
begin
if (csPaintCopy in ControlState) and (FDataLink.Field <> nil) then
Value := FDataLink.Field.AsFloat;
inherited;
end;