Si el usuario final no tiene acceso a la estructura de la base de datos, también puedes poner un Trigger que produzca un error cuando inserte mas de un registro.
De todos modos, para estos casos, yo soy partidario de utilizar compilación condicional, así evitamos dejar código compilado en el producto final, y solo agregamos código a la DEMO.
Este es un ejemplo, no se si del todo práctico pero creo mostrar la idea:
Código:
{$IFDEF DEMO}
procedure CheckCantRegistros(ADataSet: TDataSet; AMaxRecords: Integer = 20);
begin
if ADataSet.RecordCount >= AMaxRecords Then
raise Exception.CreateFmt('La versión demo no permite mas de %d registros', [AMaxRecords]);
end;
{$ENDIF}
...
procedure InsertarRegistro...
begin
{$IFDEF DEMO}
CheckCantRegistros(Query1);
{$ENDIF}
Query1.Insert;
...
end;
Saludos!