У нас та же проблема, мы закончили "маскирование" класса TParameters следующим образом:
Объявление:
TMyParameter = class(TParameter)
private
function GetAsValue: variant;
Procedure SetAsValue(const Value: variant);
public
property Value: variant read GetAsValue write SetAsValue;
end;
Реализация:
procedure TMyParameter.SetAsValue(const Value: variant);
var
iPar: Integer;
begin
for iPar:= 0 to Collection.Count - 1 do
if (Name = TParameter(Collection.Items[iPar]).Name) then
TParameter(Collection.Items[iPar]).Value:= Value;
end;
function TMyParameter.GetAsValue: variant;
begin
Result:= inherited Value;
end;
И какиспользовать:
TMyParameter(ADOQuery.Parameters.ParamByName('id')).AsValue:= 'abc';
Надеюсь, это поможет.