Свойство SQL является свойством TStrings, а не строковым свойством, а GetStrValue работает только с строковыми свойствами, и если выбрано более одного компонента, оно возвращает значение GetComponent (0). GetStrValue - это виртуальное свойство, поэтому вы можете реализовать свои собственные.
Вот что я имею в виду:
type
TQuerySqlProperty = ...
public
function GetStrValue : string; override;
...
end;
...
function TQuerySqlProperty.GetStrValue : string;
begin
if GetComponent(0) is TEJsonQuery then
begin
Result := (GetComponent(0) as TEJsonQuery ).SQL.Text;
end
else
begin
Result := inherited;
end;
end;